wordpress 如何在短代码中插入PHP代码?

zu0ti5jz  于 2023-06-21  发布在  WordPress
关注(0)|答案(3)|浏览(201)

我想插入一个php代码,但放置时出错

主题生成的短代码

[col_grid span="4" span__sm="14" height="1-2" visibility="show-for-medium"]

[ux_banner height="500px" bg="***[banner-picture]***" bg_size="original"]

[text_box width="100" scale="148" position_x="50" position_y="100" bg="rgb(88, 32, 123)"]

[ux_text text_color="rgb(247, 128, 44)" class="uppercase"]

<p><strong>preencha a proposta de adesão</strong></p>
[/ux_text]

[/text_box]

[/ux_banner]

[/col_grid]

我的PHP代码

add_action('foto_banner', 10 );
  
function foto_banner() { ?>
<?php if(get_field('foto_banner')) { ?>

<?php the_field('foto_banner'); ?>

<?php }else{
    echo "Texto não informado";
}
}

add_shortcode( 'banner-picture', 'foto_banner');
ee7vknir

ee7vknir1#

你可以这样写你的短代码:

<?php

function bannerPicture(){
    ob_start();

    if( get_field( 'foto_banner' ) ) {
        the_field( 'foto_banner' );
    } else {
        echo "Texto não informado";
    }

    $output = ob_get_contents();
    ob_end_clean();
    return $output;
    
}
add_shortcode( 'banner-picture', 'bannerPicture' );

?>

确保在get_field()第二个参数或option中添加当前页面ID(如果您从主题选项页面获取)。

62o28rlo

62o28rlo2#

你不能把PHP函数放在你的短代码中。
但是,您不需要这样做。你可以使用foreach-loop来创建html并将其存储在一个变量中,例如$shortcodehtml。
所以之后你可以打电话

echo do_shortcode('[O_U user_name="operator" blocked_message="This page is restricted for guests."]' . $shortcodehtml . '[/O_U]');

更好的方法是在shortcode函数内部创建输出-从我的Angular 来看,没有必要将整个html传递给shortcode -但这应该可以正常工作。

osh3o9ms

osh3o9ms3#

你需要创建一个输出缓冲区

function shortcode_func()
{
    ob_start();
    ?>
    // PHP codes...
    global $variable;
    require_once("/dir/file.php");

    ?>

    <!-- HTML... -->
    <div> Hello World </div> 

    <?php
    return ob_get_clean();
}
add_shortcode('shortcode', 'shortcode_func');

相关问题