it-swarm.com.de

Wie kann ich Posts nach post_parent im Admin filtern?

Ich habe dieses Tutorial und dieses Tutorial befolgt, um einem Bearbeitungsbildschirm für benutzerdefinierte Beitragstypen eine benutzerdefinierte Spalte hinzuzufügen, in der die übergeordneten Beiträge der einzelnen Beiträge angezeigt werden. Meine Frage: Wie kann ich das übergeordnete Element des Beitrags wie in der Spalte "Kategorie" des Standardbildschirms "Beiträge verwalten" anklickbar machen, sodass beim Klicken auf ein bestimmtes übergeordnetes Element nur Beiträge aus dieser Kategorie im Bearbeitungsbildschirm angezeigt werden?

Nach dem Tutorial von scribu wird die Spalte mit dem Titel des übergeordneten Elements gefüllt:

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

Ich habe versucht, das zu erreichen, was ich will (nach dem Tutorial von DevPress, aber offensichtlich ohne viel Verständnis dafür, was ich tun soll):

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

Dies macht die Beiträge der Eltern anklickbar und sobald ich auf einen klicke, ist die URL so etwas wie "edit.php? Post_type = mytype & post_parent = post_parent_ID", zeigt aber trotzdem alle Beiträge an, egal welche Eltern sie haben. Ich weiß, dass ich etwas vermisse, wahrscheinlich einen Abfrage-Hook (ich habe auch etwas über einen Restrict-Posts-Hook gelesen), aber ich habe einfach nicht das richtige Wissen, um dies zum Laufen zu bringen ... richtig. :) Bitte helfen Sie. Thx, Radu

5
rereradu

Das Problem ist, dass 'post_parent' keine öffentliche Abfragevariable ist, d. H. Sie können sie nur aus Code verwenden.

Um es über die URL verwenden zu können, müssen Sie nur die folgenden Codezeilen hinzufügen:

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