我正在重写这个问题,包括示例代码,我希望现在更容易理解。
1。我的短代码:
function testid_shortcode( ) {
global $post;
return $post->ID;
}
add_shortcode(\'testid\', \'testid_shortcode\');
2。问题是:
我正在使用示例1[ID=1]页上的快捷码:
[testid]
然后我将其包含在不同的页面上示例2[ID=2]:
$included_page = get_page( $included_id );
$content = apply_filters(\'the_content\', $included_page->post_content);
短代码在这些页面上返回“1”和“2”,而我希望它返回“1”和“1”,所以简单地说,我希望它检索“原始”页面的ID(特别是元框)。
有没有可能以某种方式修复它?我想应该在短代码本身内完成,但完全不知道如何完成。我想通过传递一个带有“原始”ID的变量并覆盖一个短码GET就可以了,但怎么做呢?
最合适的回答,由SO网友:mrwweb 整理而成
全局$post对象来自当前查询,因此您看到的是预期的行为。
如果您总是希望短代码从ID=1返回post\\u meta,那么您应该将其硬编码到短代码中,就像在@Chris\\u O的答案中,您只需保存一个等于1的变量并将其传递给get_page()
.
然而,听起来你在寻找shortcode attributes. 尝试以下操作:
// shortcode function
function testid_shortcode( $atts ) {
// extract the variables, if there is no ID attr, the default is 1
extract( shortcode_atts( array(
\'id\' => 1
), $atts ) );
// set page id to either the id attr which defaults to one.
$page_id = $id;
$page_data = get_page( $page_id );
return // ... return something with your shortcode
}
// register the shortcode
add_shortcode( \'testid\', \'testid_shortcode\' );
然后您可以使用:
[testid]
返回ID为1或
[testid id=2]
返回ID为2的post对象。