DO_SHORT代码中的IF语句

时间:2013-06-28 作者:Disgeae

是否可以在do\\u短代码中执行if语句?

<?php 
    echo do_shortcode("[table width=\'500\'] " . 
        if ( have_posts() ) : 
            while ( have_posts() ) : 
                the_post(); 
                the_content(); 
            endwhile; 
        endif; . 
    "[/table]"); 
?>
它给了我一个意想不到的T\\u IF。

编辑:如果没有IF语句,它会在短代码之外给出帖子。

1 个回复
最合适的回答,由SO网友:Adam 整理而成

echo do_shortcode() 是函数调用。不能将条件语句作为argument of a function. 您需要做的是将查询返回的结果作为函数的参数传入;

//assuming you have taken care of your query prior to this point
if ( have_posts() ) : while ( have_posts() ) : the_post();

    $content = get_the_content(); //store content in variable

    echo do_shortcode("[table width=\'500\'] ". $content . "[/table]"); 

endwhile; endif;
注:

在上面的示例中,为了防止您的内容立即被回音,您必须调用get_the_content() 哪一个returns 其价值与the_content() 这立即反映了内容。这就是为什么在没有作为参数传递的不正确的条件语句的情况下运行时,内容会出现在短代码之外。

扩展答案:

根据您的补充意见和扩展问题,检查是否存在一些;“事物”;或者一些;“事物”;满足特定条件时,您将在对短代码的函数调用之外进行测试,方法与我们上面所做的大致相同;

//assuming you have taken care of your query prior to this point
if ( have_posts() ) : while ( have_posts() ) : the_post();

    $content = get_the_content(); //store content in variable
    
    $thing = get_post_meta( get_the_ID(), \'thing\', true );

    if ($thing === "yes") {
       
       //assuming you want to concatenate your content with an image
       $content = $content . \'<br> <img src="path_to_image" />\';

    } 

    echo do_shortcode("[table width=\'500\'] ". $content . "[/table]"); 

endwhile; endif;

结束

相关推荐

How to use pre_get_posts?

我对自定义类别模板分页有问题,我搜索并阅读了使用pre\\u get\\u posts修复分页问题的内容。我阅读了WordPress Codex中的pre\\u get\\u posts信息,但我不知道如何使用它。<?php $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; $args = array( \'post_type\' => \'post\',&#x