web-dev-qa-db-fra.com

Répertoriez tous les types de publication dans la vue Admin en utilisant /wp-admin/edit.php?post_type=

J'ai créé avec succès un type de message personnalisé. J'essaie de créer une URL qui pointe vers une liste combinée de publications de tous les types de publication sur la page Afficher toutes les publications dans la vue administrateur.

Je peux construire une URL qui pointe vers des publications de types de publication spécifiques, par exemple http://<mysite>//wp-admin/edit.php?post_type=my_post_type. Mais je ne trouve pas de moyen de lister les posts de tous les types.

Est-il possible d'utiliser la balise /wp-admin/edit.php?post_type= pour pointer vers une page répertoriant les publications de tous les types de publication? Ou, sinon, comment puis-je créer une URL qui le fera?

3
HamJam

La seule façon dont cela pourrait fonctionner serait ?post_type=any basé sur WP_Query post_type params.

Mais le contexte est le problème, la page edit.php requiert un type de publication spécifique pour afficher et modifier un seul objet $ post_type_object qui renvoie, pour chaque type de message, une seule étiquette singulière, une étiquette plurielle et de nombreuses autres propriétés individuelles.

Ce ne sont pas seulement des problèmes techniques de blocage, mais aussi des problèmes conceptuels qui rendent cette tâche impossible.

Personnellement, je voudrais faire une recherche sur "Comment créer une page d’administrateur personnalisée" avec une requête comme post_type=any

4
Andrei

Vous pouvez utiliser pre_get_posts avec un paramètre $_GET et se greffer sur le type de publication actuel. Par exemple, si vous visualisez all éditable dans le panneau d'administration, vous pouvez ajouter un paramètre showall=true et afficher tous les types de publication:

/**
 * Show all post editable post types
 *
 * @param WP_Query Object $query
 *
 * @return void
 */
function show_all_posttypes( $query ) {
    if( ! is_admin() ) {
        return;
    }

    if( isset( $_GET, $_GET['showall'] ) && true == $_GET['showall'] ) {
        $query->set( 'post_type', 'any' );
    }
}
add_filter( 'pre_get_posts', 'show_all_posttypes' );

Si vous souhaitez limiter les types de publication d'une manière ou d'une autre, vous pouvez utiliser get_post_types() function et transmettre les types de publication renvoyés dans le paramètre post_type sous la forme d'un tableau ().

Nous pouvons même ajouter ceci en tant que lien d’administration de sous-page pour faciliter l’accès:

/**
 * Show All Post Types Link
 * - Subpage of "All Pages"
 *
 * @return void
 */
function show_all_posttypes_link() {
    add_submenu_page('edit.php?post_type=page', '', 'All Post Types', 'edit_posts', '/edit.php?post_type=page&showall=true');
}
add_action( 'admin_menu', 'show_all_posttypes_link' );

Vous pouvez continuer à étendre ceci encore et encore pour personnaliser les sorties de colonne et autres, mais c'est là l'essentiel.

1
Howdy_McGee