WP_LIST_PAGES不显示具有自定义页面模板的子项

时间:2013-07-27 作者:Michiel Standaert

使用自定义页面模板时,我似乎遇到了问题wp_list_pages.
这些页面始终显示在网站底部的菜单中。

问题是,他们应该有一个包含孩子的可折叠菜单,但孩子们没有显示出来。这些孩子的模板类型与家长的模板类型不同,我想这就是我的问题所在。

下面你可以找到我是怎么打电话的wp_list_pages. 它确实可以正确地提取和显示父对象,但不能正确地提取和显示子对象。

$brands = wp_list_pages(array(\'title_li\' => \'\',
    \'post_type\' => \'page\',
    \'meta_value\' => \'brands.php\',
    \'lang\' => $GLOBALS["pll_language"],
    \'showposts\' => 20));
我有什么想法可以解决这个问题吗?

EDIT这是页面结构的一个示例。

Nike鞋1鞋2鞋3衬衫太阳镜等。。。直到品牌9,但鞋子1可以随时取下,鞋子4可以随时添加。由于我不想一直更新菜单,我只想在菜单中添加“Nike”、“Brand 2”,所有其他页面都必须自动加载。有什么想法吗?

1 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

您最初的具体问题可能会出现。我想我明白你想做什么了
您正试图通过父页面使用的页面模板以及通过检查_wp_page_template 到达后。

首先,这感觉像是一种相当粗糙的方法,其次,这是meta_value 参数起作用,它将排除未设置该自定义字段值的所有页面。

如果你必须坚持wp_list_pages, 最简单的解决方案可能是再创建一个(实用程序)页面,使其成为所有品牌页面的超级父级,并利用child_of 参数:

$brands = wp_list_pages(
    array(
        \'title_li\' => \'\',
        \'child_of\' => 123 // page ID of the uber-parent
    )
);
请注意wp_list_pages 都不接受lang 也不是ashowposts 参数这些对功能来说毫无意义
进一步,\'page\'post_type 参数,因此是冗余的。

还要注意的是wp_list_pages 不是创建菜单的最灵活的方法。如果我在上面提供的公认的快速而肮脏的解决方案不能解决问题,您可能需要熟悉一下wp_nav_menu 或自定义查询和WP_Query 而不是类。

与编辑相关的一般架构方法:

同样,这并不是说存在一个明确的正确解决方案,因为现在我们不再谈论具体问题,而是进入了架构领域。

根据您提供的信息,这将是我的方法:

我会创建一个custom taxonomy 对于品牌(实际品牌,如“Nike”,是术语)和custom post type 对于产品。

一种称为“产品”的帖子类型,其中产品的种类(“鞋子”、“衬衫”、“太阳镜”)由元值标识,或者每种产品的帖子类型(可能是清洁剂)。

产品本身(“鞋1”、“鞋2”)将分别为“产品”(或“鞋”)类型的帖子。

结束

相关推荐

Custom menus not showing

作为我上一次关于菜单的未解决查询的后续,这个问题已经进一步扩展。我的菜单没有打印代码中的任何地方。我正在注册菜单功能。php:add_action( \'after_setup_theme\', \'your_newtheme_setup\' ); if ( ! function_exists( \'your_newtheme_setup\' ) ) : function your_newtheme_setup() { if (