web-dev-qa-db-fra.com

Comment faire pour que les pages metabox affichent toute la hiérarchie dans le menu admin?

En cours d'exécution WP 3.9.1

J'ai beaucoup de pages et de sous-pages.

Lorsque je parviens à créer un menu, de nombreuses sous-pages ne s'affichent pas au bon niveau, mais certaines le font?

Voici comment est affiché le metabox des pages

Les pages metabox devraient afficher quelque chose de plus semblable à ceci


MODIFIER

Nombre dans la capture d'écran sont un peu foutus désolé à ce sujet.

Le problème est qu'après les premières pages, toutes les pages sont affichées au même niveau, mais elles ne le devraient pas.

Ça devrait ressembler à ça

  • Page 1
    • Sous-page A de la page 1
    • Sous-page B de la page 1
      • Sous-page 1 de la sous-page B
      • Sous-page 2 de la sous-page B
      • Sous-page 3 de la sous-page B
  • Page 2
    • Sous-page A de la page 2
      • Sous-page 1 de la sous-page A
      • Sous-page 2 de la sous-page A
    • Sous-page B de la page 2
      • Sous-page 1 de la sous-page B
      • Sous-page 2 de la sous-page B

...


Avez-vous une idée de la cause de ce problème ou de la façon de le réparer afin que je puisse gérer mon menu?

1
pyverret

Trouvé un correctif.

Il semble que la pagination rompt l’affichage de la hiérarchie des pages dans la metabox.

Voici le correctif pour désactiver la pagination des pages dans la metabox du menu de navigation

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

Merci

1
pyverret

Les réponses précédentes proposent d’éditer des fichiers WordPress de base, ce qui est jamais une bonne idée, car de nouvelles versions de WordPress écraseront les modifications (entre autres).

Bien que le ticket Trac original n ° 18282 soit ouvert depuis juillet 2011, le problème persiste dans WordPress 4.6 - et ce, depuis plus de 5 ans.

Heureusement, il existe un moyen "sûr" d'implémenter une solution de contournement pour modifier le comportement sans pirater le noyau WordPress.

Sergey Biryukov, un auteur principal, a écrit un petit plugin permettant de modifier le comportement du métabox de Pages et de préserver la hiérarchie des types de publication et des taxonomies:

Écran Préserver la hiérarchie de page et de taxonomie dans les menus d'édition

Le plug-in affecte uniquement l'onglet "Afficher tout", et non "Les plus récents" ou "Les plus utilisés", mais constitue une solution beaucoup plus facile à gérer et responsable que de corriger les fichiers ou de modifier directement les fichiers.

1
rjb

Voici un correctif que vous pouvez appliquer dans le functions.php de votre propre thème:

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;
}

Mise à jour: Doit être ajouté avec la priorité 9 pour fonctionner correctement avec le filtre par défaut _wp_nav_menu_meta_box_object

0
Dan Burzo

Ceci est mon implémentation de la solution mentionnée ci-dessus, mise à jour pour Wordpress 4.6.1

Dans le fichier wp-admin/nav-menu.php, modifiez la fonction wp_nav_menu_item_post_type_meta_box en ajoutant l'argument 'nopaging' au tableau à partir de la ligne 319 comme suit:

$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
);

Cela désactivera la pagination dans la boîte méta et la hiérarchie des pages devrait s'afficher correctement, même si vous avez une longue liste de pages.

J'espère que ça aide quelqu'un!

0