如何获取GET_PAGE()包含的页面ID?

时间:2012-05-08 作者:Wordpressor

我正在重写这个问题,包括示例代码,我希望现在更容易理解。

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就可以了,但怎么做呢?

2 个回复
最合适的回答,由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对象。

SO网友:Chris_O

get_page 要求通过变量传递页面id

您给它一个字符串,该字符串导致WordPress使用global $page->ID 调用函数时。

只需将页面id作为变量传递,它就会正常工作

$page_id = 1;
$page_data = get_page( $page_id );

结束