使用自定义页面模板时,我似乎遇到了问题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”,所有其他页面都必须自动加载。有什么想法吗?
最合适的回答,由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
也不是a
showposts
参数这些对功能来说毫无意义
进一步,
\'page\'
是
post_type
参数,因此是冗余的。
还要注意的是wp_list_pages
不是创建菜单的最灵活的方法。如果我在上面提供的公认的快速而肮脏的解决方案不能解决问题,您可能需要熟悉一下wp_nav_menu
或自定义查询和WP_Query
而不是类。
与编辑相关的一般架构方法:
同样,这并不是说存在一个明确的正确解决方案,因为现在我们不再谈论具体问题,而是进入了架构领域。
根据您提供的信息,这将是我的方法:
我会创建一个custom taxonomy 对于品牌(实际品牌,如“Nike”,是术语)和custom post type 对于产品。
一种称为“产品”的帖子类型,其中产品的种类(“鞋子”、“衬衫”、“太阳镜”)由元值标识,或者每种产品的帖子类型(可能是清洁剂)。
产品本身(“鞋1”、“鞋2”)将分别为“产品”(或“鞋”)类型的帖子。