実行中[WP 3.9.1
たくさんのページとサブページがあります。
メニューを作成しようとすると、たくさんのサブページが正しいレベルで表示されませんが、そうではありません。
メタボックスのページは、このように表示されるはずです
編集
スクリーンショットの数字はそれについてちょっとごめんなさい。
問題は、最初の数ページ後、すべてのページが同じレベルで表示された後に表示されますが、表示されないことです。
こんな感じ
...
これが何を引き起こすのか、またはそれをどのように修正するのか、という考えがあるので、メニューを管理できますか?
修正を見つけました。
ページネーションがメタボックス内のPages階層の表示を壊しているようです。
ナビゲーションメニューのメタボックスでページネーションを無効にするための修正は、次のとおりです。
https://core.trac.wordpress.org/attachment/ticket/18282/18282-disable-nav-menu-pagination.patch
ありがとう
これまでの回答では、WordPressの新しいバージョンでは変更が上書きされるため、neverというコアWordPressファイルの編集を推奨しています。
オリジナルの Tracチケット#18282 は2011年7月以来公開されていますが、問題はWordPress 4.6にもまだ存在しています - 5年以上続いています。
幸いなことに、WordPressコアをハッキングすることなく動作を変更するための回避策を実装するための「安全な」方法があります。
コアコミッターのSergey Biryukovは、Pagesメタボックスの動作を変更し、投稿タイプと分類法の両方の階層を保持する小さな機能プラグインを書きました。
このプラグインは「最新」や「最もよく使われる」ではなく、「すべて表示」タブにのみ影響しますが、コアにパッチを適用したりファイルを直接ハックしたりするよりもはるかに保守性が高く、責任ある解決方法です。
これがあなた自身のテーマの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;
}
更新:デフォルトのフィルタ_wp_nav_menu_meta_box_object
でうまく動作するように、優先順位9で追加する必要があります。
これは、Wordpress 4.6.1用に更新された、上記のソリューションの私の実装です。
ファイルwp-admin/nav-menu.phpで、次のように、行319から始まる引数 'nopaging'を配列に追加して、関数wp_nav_menu_item_post_type_meta_boxを編集します。
$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
);
これにより、メタボックスのページ区切りが無効になり、長いページリストがある場合でも、ページ階層が正しく表示されます。
誰かに役立つことを願っています!