快捷码中的DO_SHORT代码

时间:2013-06-14 作者:user319940

这听起来可能有点困惑,但我会尽力解释。我制作了一个获取帖子内容的短代码(当给定id时),它如下所示:

$post_id = $id;
$queried_post = get_post($post_id);
$postcontent = $queried_post->post_content;
$title = $queried_post->post_title;
然后,我有另一个变量,它将一些东西放在一起并返回:

$finaloutput = $title . $postcontent;
我想做的是能够使用$postcontent, 因此,当获取一篇文章时,将显示该文章中的任何短代码。我试过跑步do_shortcode$postcontent 变量,但它导致页面根本无法加载。

有什么想法吗?

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

你可以试试这个:

add_shortcode( \'content\',\'content_callback\' );

function content_callback( $atts, $content = NULL ){
    $atts = shortcode_atts(array(
        \'pid\' => \'\',
    ), $atts);      

    if( ! is_int( 1 * $atts[\'pid\'] ) )
        return "<!-- Shortcode Error: pid must be an integer -->"; 

    if(  absint( $atts[\'pid\'] ) === get_the_ID() )
        return "<!-- Shortcode Error: pid can\'t be the current id -->"; 

    $queried_post = get_post( absint( $atts[\'pid\'] ) );

    if( ! is_object( $queried_post ) )
        return "<!-- Shortcode Error: Post not found! -->";

    $postcontent = do_shortcode( $queried_post->post_content );
    $title = $queried_post->post_title;

    $finaloutput = $title . $postcontent;

    return $finaloutput;
}
此处使用的快捷码如下所示:

[content pid="2069"]
在哪里pid 是一些帖子ID。

结束

相关推荐

Shortcode of a function

我得到了这个函数,我想将“foreach”的contents divs作为return。我该怎么做?<?php $args = array( \'numberposts\' => 6, \'post_status\'=>\"publish\",\'post_type\'=>\"post\",\'orderby\'=>\"post_date\"); $postslist = get_posts( $args ); fo