在函数中获取循环前的当前页面id。php

时间:2013-12-16 作者:Larry K

Shoestrap 主题,您经常使用挂钩来更改内容。我想将以下内容添加到functions.php 但它不起作用。。。

// in functions.php
if ( is_home() ) {
  add_action( \'shoestrap_below_top_navbar\', \'my_custom_below_top_navbar\' );
}
// also tried since we\'re before the loop
if ( 684 == get_queried_object_id() ) {
  add_action( \'shoestrap_below_top_navbar\', \'my_custom_below_top_navbar\' );
}
// but get_queried_object_id() returns 0
我正在使用WP 3.8。我找到了这个bug report 但这似乎不是完全相同的问题,因为我的页面只是主页,而不是查询页面。

ps,如果有人想创建一个shoestrap标签,请将其添加到此q。

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

我很肯定你会尝试使用这个条件标记来提前,所以它们不起作用。

从…起Codex:

警告:您只能在WordPress中的posts\\u selection操作挂钩之后使用条件查询标记(wp操作挂钩是第一个可以使用这些条件的挂钩)。对于主题,这意味着如果在函数体中使用条件标记,它将永远无法正常工作。php,即函数外部。

那你该怎么办?

只需将代码放入一些操作中,稍后再运行。

function my_wp_action_callback() {
    if ( is_home() ) {
        add_action( \'shoestrap_below_top_navbar\', \'my_custom_below_top_navbar\' );
    }
}
add_action( \'wp\', \'my_wp_action_callback\' );
另一种方法是始终添加操作,并在其中放置条件语句:

function my_custom_below_top_navbar() {
    if ( !is_home() )
        return;
    // ... 
}
add_action( \'shoestrap_below_top_navbar\', \'my_custom_below_top_navbar\' );

结束

相关推荐

Shotcode error on functions

您好,我有一个生成错误的短代码。有人能帮忙吗?add_shortcode(\'do-action\', \'do_action_shortcode\'); function do_action_shortcode($atts, $content = \'\') {   ob_start();   do_action($content);   $out = ob_get_contents();   ob_end_clean();   return $