web-dev-qa-db-fra.com

Comment puis-je filtrer les publications par post_parent dans l'admin?

J'ai suivi ce tutoriel et celui-ci pour ajouter une colonne personnalisée à un écran de modification de type de message personnalisé, affichant le message parent de chaque message. Ma question: Comment puis-je rendre le post-parent cliquable comme dans la colonne Catégorie de l'écran standard de gestion des publications afin que, lorsque je clique sur un post-parent spécifique, seules les publications de cette catégorie soient affichées dans l'écran de modification?

Après le tutoriel de scribu, la colonne contient le titre du post-parent:

function manage_mytype_columns( $column, $post_id ) {
global $post;
        $pp_id = get_post($post_id)->post_parent; /*The post parent id is stored also as post meta, so I could also use $pp_id = get_post_meta($post_id, 'post_parent', true) ); */
        if ( empty( $pp_id ) ) {
            echo __( 'No post parent' );}
        else {
            $pp_title = get_post($pp_id)->post_title;
                            echo $pp_title; }
}
add_action( 'manage_mytype_posts_custom_column', 'manage_mytype_columns', 10, 2 );

J'ai essayé de réaliser ce que je voulais (en suivant le tutoriel de DevPress, mais évidemment sans trop comprendre ce que je suis censé faire):

function manage_mytype_columns( $column, $post_id ) {
global $post;
        $pp_id = get_post($post_id)->post_parent; /*The post parent id is stored also as post meta, so I could also use $pp_id = get_post_meta($post_id, 'post_parent', true) ); */
        if ( empty( $pp_id ) ) {
            echo __( 'No post parent' );}
        else {
            $pp_title = get_post($pp_id)->post_title;
                            $pp_url = add_query_arg(array('post_type' => $post->post_type, 'post_parent' => $pp_id), 'edit.php');
                           echo '<a href="'.$pp_url.'">'.$pp_title.'</a>'; }
}
add_action( 'manage_mytype_posts_custom_column', 'manage_mytype_columns', 10, 2 );

Cela rend les parents postaux cliquables et une fois que je clique sur l'un d'eux, l'url ressemble à "edit.php? Post_type = mytype & post_parent = post_parent_ID" mais il affiche toujours tous les messages, quel que soit le parent qu'ils ont. Je sais qu'il me manque quelque chose, probablement un crochet de requête (j'ai aussi lu quelque chose sur un crochet de messages restrict), mais je n'ai tout simplement pas les connaissances nécessaires pour que cela fonctionne ... correctement. :) S'il vous plaît aider. Thx, Radu

5
rereradu

Le problème est que 'post_parent' n'est pas une requête publique, c'est-à-dire que vous ne pouvez l'utiliser que depuis le code.

Pour pouvoir l'utiliser depuis l'URL, il vous suffit d'ajouter ces lignes de code:

function make_post_parent_public_qv() {
    if ( is_admin() )
        $GLOBALS['wp']->add_query_var( 'post_parent' );
}
add_action( 'init', 'make_post_parent_public_qv' );
6
scribu