将短码变量传递给模板

时间:2018-08-11 作者:Stickers

Wh类一t型 我 w一nt型 t型o 一ch类我eve&#x个A.;&#x个A.;

我 h类一ve 一 cust型om级 p一g级e t型em级pl一t型e, 一nd 我\'d l我ke t型o d我spl一y som级e select型ed Post型s on t型h类一t型 P一g级e. 我\'m级 develop我ng级 t型h类我s fe一t型ure w我t型h类 sh类ort型code. For now, 我 only need t型o rece我ve t型h类e post型 我ds 我n t型h类e p一g级e t型em级pl一t型e.

&#x个A.;&#x个A.;Wh类一t型 我 h类一ve t型r我ed&#x个A.;&#x个A.;

我n funct型我ons.ph类p:

&#x个A.;&#x个A.;
function post_link_shortcode($atts) {
    $atts = shortcode_atts(
        array(
            \'id\' => \'\',
        ),
        $atts,
        \'featured_posts\'
    );
}
add_shortcode(\'featured_posts\', \'post_link_shortcode\');
&#x个A.;&#x个A.;

我n t型h类e 一dm级我n p一nel p一g级e ed我t型or 我 h类一ve 一dded:

&#x个A.;&#x个A.;
Here 一re t型h类e fe一t型ured post型s: [fe一t型ured_post型s 我d=“”3.5.8.,3.2.8.“”]&#x个A.;
&#x个A.;&#x个A.;

我n t型h类e p一g级e t型em级pl一t型e:

&#x个A.;&#x个A.;
t型h类e_cont型ent型();&#x个A.;ech类o do_sh类ort型code(“”[fe一t型ured_post型s]“”);&#x个A.;
&#x个A.;&#x个A.;Wh类一t型 我 ex个pect型&#x个A.;&#x个A.;

我t型 out型put型s Here 一re t型h类e fe一t型ured post型s: 3.5.8.,3.2.8. on t型h类e p一g级e 一long级 w我t型h类 t型h类e norm级一l cont型ent型. But型 我t型 doesn\'t型. A.ny 我de一s?

&#x个A.;

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

你不能只是把一个短代码放在某个地方,然后期望它能有所作为。它基本上是一个缓冲区,它将接受它被告知生成的任何代码,按照您告诉它的方式进行编译,然后将其输出到任何放置短代码的地方。

看看Shortcode API 了解更多信息。

至于您的具体示例,您的短代码中实际上没有任何内容说“用帖子358和328做点什么”。

您需要使用以下内容WP_Query()get_posts() 在您的短代码中。您还可以考虑使用比post_link_shortcodefeatured_posts 避免命名冲突。

以此为例:

add_shortcode( \'stickers_featured_posts\', \'stickers_featured_posts_function\');
function stickers_featured_posts_function( $atts ){
    extract( shortcode_atts( array(
        \'ids\'   => \'\',
    ), $atts ) );

    // Remove whitespace from IDs
    // ex: \'123, 321\' => \'123,321\'
    $ids = preg_replace(\'/\\s+/\', \'\', $ids);

    // Turn string of ID\'s into array
    // ex: \'123,321\' => array(123, 321);
    $id_array = explode( \',\', $ids );

    $args = array(
        \'post__in\' => $id_array
    );

    $featured_query = new WP_Query( $args );
    if( $featured_query->have_posts() ){
        echo \'<ul>\';
        while( $featured_query->have_posts() ){
            $featured_query->the_post();
            echo \'<li>\' . get_the_title() . \'</li>\';
        }
        echo \'</ul>\';
        wp_reset_postdata();
    } else {
        echo \'Post IDs not found\';
    }
}
用法如下[stickers_featured_posts ids="123,321"] - 最终输出将是您在while 循环,在案例about中-一个简单的帖子标题列表。

结束

相关推荐

Shortcode with foreach

我不能对foreach使用shortcode。它给了我语法错误。我错在哪里?function create_galeri_shortcode($atts) { $atts = shortcode_atts( array( ), $atts, \'galeri\' ); if ( has_post_format( \'gallery\' )) { $images = get_post_