如何让页面元显示菜单管理中的所有层次?

时间:2014-07-28 作者:pyverret

运行WP 3.9.1

我有很多页面和子页面。

当我开始创建菜单时,很多子页面并没有显示在正确的级别上,但有些子页面会显示在正确的级别上?

This is how the pages metabox is displayed

“页面”元框应显示类似的内容

<小时>

EDIT

截图中的数字有点乱,对此表示抱歉。

问题是在前几页之后,所有页面都显示在同一级别上,但它们不应该显示在同一级别上。

应该是这样的

第1页第1页第A子页第1页第B子页第1子页第B子页第B子页第2子页第B子页第3子页第2页子页A的子页1,子页A的子页2,子页B的子页1,子页B的子页2。。。

你知道是什么原因造成的,或者如何修复它,这样我就可以管理菜单了吗?

4 个回复
最合适的回答,由SO网友:pyverret 整理而成

找到修复程序。

分页似乎破坏了元数据库中页面层次结构的显示。

以下是在nav菜单元框中禁用页面分页的修复程序

https://core.trac.wordpress.org/attachment/ticket/18282/18282-disable-nav-menu-pagination.patch

谢谢

SO网友:rjb

之前的回答建议编辑核心WordPress文件,这绝对不是一个好主意,因为新版本的WordPress将覆盖更改(以及其他内容)。

而原来Trac ticket #18282 自2011年7月开放以来,这个问题仍然存在于WordPress 4.6中,至今已有5年多的时间了。

幸运的是,有一种“安全”的方法可以实现一种变通方法来改变行为,而无需入侵WordPress核心。

核心提交人Sergey Biryukov编写了一个小功能插件,可以更改页面元盒行为,并保留帖子类型和分类的层次结构:

Preserve Page and Taxonomy Hierarchy on Edit Menus Screen

该插件只影响“查看所有”选项卡,而不影响“最近”或“最常用”选项卡,但与修补核心或直接破解文件相比,它是一种更具可维护性和责任心的解决方案。

SO网友:Cazuma Nii Cavalcanti

这是我对上述解决方案的实现,已针对Wordpress 4.6.1进行了更新

在文件wp管理/导航菜单中。php编辑函数wp\\u nav\\u menu\\u item\\u post\\u type\\u meta\\u框,将参数“nopage”添加到从第319行开始的数组中,如下所示:

$args = array(
    \'offset\' => $offset,
    \'order\' => \'ASC\',
    \'orderby\' => \'title\',
    \'posts_per_page\' => $per_page,
    \'post_type\' => $post_type_name,
    \'suppress_filters\' => true,
    \'update_post_term_cache\' => false,
    \'update_post_meta_cache\' => false,
    \'nopaging\' => true // add this argument
);
这将禁用元框中的分页,即使页面列表很长,页面层次结构也应正确显示。

希望它能帮助别人!

SO网友:Dan Burzo

这里有一个修复程序,您可以在自己的主题中应用functions.php:

add_filter( \'nav_menu_meta_box_object\', \'disable_pagination_in_menu_meta_box\', 9 );

function disable_pagination_in_menu_meta_box($obj) {
  $obj->_default_query = array(
    \'posts_per_page\' => -1
  );
  return $obj;
}
Update: 需要添加优先级9才能很好地使用默认筛选器_wp_nav_menu_meta_box_object

结束

相关推荐

WP_DROPDOWN_PAGES默认值

我有一个页面下拉菜单,但在我转到所选页面后,让我们说“关于我们”,dropbown的默认标题按钮是页面的标题,“关于我们”,因此我希望标题/默认选项是“请选择页面”或类似的内容。我的代码是:wp_dropdown_pages(\"title_li=&depth=1&sort_column=menu_order&child_of=\".$post->post_parent.\"&echo=0&selected=$currPage\"); 我做错了什么,