自定义 WordPress 插件 - 短代码中的 PHP 变量未显示在页面上

问题描述 投票:0回答:1

我正在构建一个 Wordpress 插件并遇到一个奇怪的问题。可能是我缺少的一个简单修复。

我的插件中有以下短代码挂钩。

add_shortcode( "example", "ah_create_shortcode" );
function ah_create_shortcode() {
    $return_string = '';

    $return_string .= '<section class="ah-lots">';
    $return_string .= '<div>' . $address . '</div>';
    $return_string .= '<div>Test Line</div>';
    $return_string .= '</section>';

    return $return_string;
}

当我将短代码放在页面上时,即[示例] - 它输出除 $address 变量之外的所有内容。所以我可以在实际页面上看到“测试线”等。

$address 变量存在,因为我可以直接在插件的管理页面上输出它,并且它有一个值。

我确信这是一个简单的修复,我对 Wordpress 还比较陌生。我尝试将 $address 作为参数传递给短代码函数,确保在创建短代码之前声明变量并具有值等。

谢谢!

php wordpress plugins
1个回答
0
投票

我在这里非常愚蠢。 @CBroe 让我朝正确的方向前进。

我更新了简码函数以在其中创建 $address 变量,而不是在其上方。

下面的代码工作正常。

add_shortcode( "example", "ah_create_shortcode" );
function ah_create_shortcode($address) {

    $lots = get_option('ah_lots');
    $returned_lots = json_decode($lots, true);

    if ($returned_lots) {
        $address =              $returned_lots['data']['data'][0]['address'];
        $short_description =    $returned_lots['data']['data'][0]['short_description'];
        $bedrooms =             $returned_lots['data']['data'][0]['bed_rooms'];
        $bathrooms =            $returned_lots['data']['data'][0]['bath_rooms'];
        $livingrooms =          $returned_lots['data']['data'][0]['living_rooms'];
        $image_url =            $returned_lots['data']['data'][0]['primary_image']['full_url'];

        // echo $address;
    } else {
        echo "Failed to retrieve address from JSON.";
    }

    $return_string = '';

    $return_string .= '<section class="ah-lots">';
    $return_string .= '<div>' . $address . '</div>';
    $return_string .= '<div>Test Line</div>';
    $return_string .= '</section>';

    return $return_string;
}
© www.soinside.com 2019 - 2024. All rights reserved.