Wordpress get_pages meta_key不显示页面

时间:2015-08-19 20:14:12

标签: wordpress navigation

我在Wordpress主题中使用get_pages来创建导航。

我有一些我不想在导航中显示的页面。

在所有网页上,我都有一个' dont_show_in_nav'真/假自定义字段。

我可以使用meta_key添加包含' dont_show_in_nav'选 但是我不想展示那些有' dont_show_in_nav'地选择。

我可以创建一个' show_in_nav'自定义字段并选择要显示的所有页面,但我必须有很多页面才能执行此操作。

我已尝试'meta_value' => false

    $pages_args = array(
      'sort_column' => 'menu_order',
      'parent' => 0,
      'post_type' => 'page',
      'post_status' => 'publish',
      'meta_key'  => 'dont_show_in_nav',
      'meta_value' => true
    );

2 个答案:

答案 0 :(得分:0)

我猜测问题是meta_value必须是一个字符串,因为WordPress只支持post meta的字符串。当你创建你的领域时,你实际节省了什么?是“真”这个词,它是'0'还是'1'等?

无论如何,在wordpress中生成导航菜单的更好方法是利用导航菜单功能。看看wp_nav_menu(),它应该比元键更可靠。

答案 1 :(得分:0)

截至目前,get_pages()的Wordpress文档说该功能不支持使用meta_key进行查询:

  

注意:此功能目前不会使用' meta_key'和' meta_value' $ args数组中的参数如下所述。在WordPress代码库中修复此问题之前,您可能希望使用get_posts()。

因此,您的代码应该调用get_posts()代替:

$pages_args = array(
  'orderby' => 'menu_order',
  'parent' => 0,
  'post_type' => 'page',
  'post_status' => 'publish',
  'meta_key'  => 'dont_show_in_nav',
  'meta_value' => 'true'
);
$pages = get_posts($pages_args);

请注意,我引用了'true',因为对于Wordpress来说,它只是一个文本字段。此外,get_posts的某些参数与get_pages略有不同。