首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >WP -包含html和php混合的短码(ACF变量)

WP -包含html和php混合的短码(ACF变量)
EN

Stack Overflow用户
提问于 2018-08-18 07:33:01
回答 2查看 395关注 0票数 0

我试图创建一个可湿性粉剂短码,将包括html和php。例如,类似这样的内容(这不起作用):

function my_first_shortcode() {
    $content = <<<EOT
    <h1>Some title</h1>
    <p><?php the_field('description'); ?></p>
EOT;
return $content; 
} 
add_shortcode('my_shortcode', 'my_first_shortcode');

the_field('name_of_field');通常输出指定变量/字段(高级自定义字段)的内容。

HEREDOC是这样做的正确方式吗?如果是这样,我会怎么做呢?如果我能把变量传递给短代码,那就更好了。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-18 07:51:27

我总是喜欢对我的短码使用输出缓冲,如下所示。

function my_first_shortcode() {
    ob_start(); ?>
    <h1>Some title</h1>
    <p><?php echo the_field('description'); ?></p>
    <?php
    return ob_get_contents();
} 
add_shortcode('my_shortcode', 'my_first_shortcode');
票数 0
EN

Stack Overflow用户

发布于 2020-05-02 12:30:48

add_shortcode('location_start_your_application_group', 'start_your_application_group');

function start_your_application_group() {
    ob_start();

    $start_your_application_group = '';
    $start_your_application_group .= '<section class="start-your-application">';
     if ( have_rows( 'start_your_application_group', 'option' ) ) : 
         while ( have_rows( 'start_your_application_group', 'option' ) ) : the_row(); 
           $heading = get_sub_field( 'heading' );
             $content = get_sub_field( 'content' );

             if ( $heading !== '' ) {
                    $start_your_application_group .= '<h3 class="start-your-application__heading">' . $heading . '</h3>';
             }
             if ( $content !== '' ) {
                $start_your_application_group .= '<div class="start-your-application__content">' . $content . '</div>';
             }

             $image = get_sub_field( 'image' );
             if ( $image ) { 
                $start_your_application_group .= '<div class="start-your-application__image-container"><img class="start-your-application__image" src="' . esc_url($image['url']) .'" alt="' . $image['alt'] . '" /></div>';
            } 
        endwhile;
    endif;

    $start_your_application_group .= '</section>';
    $start_your_application_group = ob_get_clean();

    return $start_your_application_group;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51903966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档