在短码函数中获取POST对象

时间:2013-10-19 作者:topoftheforts

我必须显示来自另一个页面(index.php)的帖子,所以我的代码是

$section_id = 16;
$section_home = get_post($section_id);

setup_postdata( $section_home ); 
the_content();
这篇文章(ID为16)内部有几个短代码。我无法访问shortcode函数中的$post对象,例如,我尝试了

function tp_sc_flipcoin($atts,$content = null){
    global $post;
    var_dump($post);
    return "";
}

add_shortcode( \'tp_flipcoin\', \'tp_sc_flipcoin\' );
并显示ID为1的帖子,我也尝试了:

function tp_sc_flipcoin($atts,$content = null){
    var_dump($post);
    return "";
}

add_shortcode( \'tp_flipcoin\', \'tp_sc_flipcoin\' );
在这种情况下,它显示NULL。

我做错了什么?

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

您需要自己重新分配$post。See the WordPress Codex 那个setup_postdata 不会为你做的。尝试以下操作:

global $post;

$section_id = 16;
$post = get_post( $section_id );
setup_postdata( $post ); 

the_content();

结束

相关推荐

Custom field within shortcode

我目前正在使用“WP Simple Paypal Shopping Cart”插件建立一个简单的Paypal电子商务网站,它非常容易使用,但为了节省客户编写短代码的时间,我在后端设置了自定义字段以输入产品名称和价格TheAdd to Cart 按钮是使用一段简单的短代码生成的,如下所示:<?php echo print_wp_cart_button_for_product(\'Product Name\', Product Price); ?> 显然正在替换Product Name