带有pre_get_posts的wp_nav_menu_objects

时间:2016-02-11 06:39:17

标签: php wordpress

我正在尝试根据导航菜单查询帖子。 即我在导航菜单中获取第一项的对象ID,并希望以这种方式查询帖子,

以下是代码。

从导航菜单中获取第一个项目

 function get_theme_item( $theme_location ) {
     if( ! $theme_location ) return false;

     $theme_locations = get_nav_menu_locations();
     if( ! isset( $theme_locations[$theme_location] ) ) return false;

     $menu_obj = get_term( $theme_locations[$theme_location], 'nav_menu' );
     if( ! $menu_obj ) return false;

    $menu_items = wp_get_nav_menu_items($menu_obj->term_id);
    foreach ($menu_items as $menu_item) {
      $qid = $menu_item->object_id;
        break;
     }
     return $qid;
}

嗯,这完美无缺,并返回第一个菜单项的id。

查询帖子代码:

 function p_query_posts($query) {
    $id = get_theme_item('header_menu');
 if (  $query->is_main_query() && is_front_page() ) {
    $query->set( 'post_type', array( 'album_post' ) );
      $taxquery = array(
    array(
        'taxonomy' => 'album',
        'field' => 'id',
        'terms' => array($id)
        )
    );

$query->set( 'tax_query', $taxquery );
}

return $query;
}
add_action('pre_get_posts','p_query_posts');

问题: 这给了我500内部服务器错误,没有显示任何错误。 如果我将$id更改为12,即$id = '12',则它可以正常运行。

任何帮助表示感谢。

0 个答案:

没有答案