Erstellen Sie eine benutzerdefinierte WP_List_Table in post_type

Ich habe einen Post-Typ namens “case”. Ich möchte eine “Unterseite” erstellen, um nur meine “Fälle” aufzulisten. Und fügen Sie einige benutzerdefinierte HTML (Suchfeld, einige Etiketten, Logos, etc ..)

Jeder weiß, wie kann ich das tun?

Code zum Erstellen des Post-Typs.

function my_custom_post_type_case() { $labels = array( 'name' => _x( 'Cases', 'post type general name' ), 'singular_name' => _x( 'Case', 'post type singular name' ), 'add_new' => _x( 'Add New', 'case' ), 'add_new_item' => __( 'Add New Case' ), 'edit_item' => __( 'Edit Case' ), 'new_item' => __( 'New Case' ), 'all_items' => __( 'All Cases' ), 'view_item' => __( 'View Case' ), 'search_items' => __( 'Search Cases' ), 'not_found' => __( 'No cases found' ), 'not_found_in_trash' => __( 'No cases found in the Trash' ), 'parent_item_colon' => '', 'menu_name' => 'Cases' ); $args = array( 'labels' => $labels, 'description' => 'Business Cases & Teaching Material', 'public' => true, 'menu_icon' => 'dashicons-book', 'menu_position' => 5, 'map_meta_cap' => true, 'capability_type' => array('case', 'cases'), 'capabilities' => array( 'edit_post' => 'edit_case', 'edit_posts' => 'edit_cases', 'edit_others_posts' => 'edit_other_cases', 'publish_posts' => 'publish_cases', 'edit_publish_posts' => 'edit_publish_cases', 'read_post' => 'read_cases', 'read_private_posts' => 'read_private_cases', 'delete_post' => 'delete_case' ), 'supports' => array( 'title', 'editor', 'wpcom-markdown', 'revisions' ), 'has_archive' => false ); register_post_type( 'case', $args ); } add_action( 'init', 'my_custom_post_type_case' ); 

Hier ist der Code zum Hinzufügen der “Sub-Seite”.

 function register_adminMenu(){ add_submenu_page('edit.php?post_type=case', 'My cases', 'My cases', 'manage_options', 'my_cases', 1); }; function my_cases(){ include_once(file_to_script); } 

Das “include_once (file_to_script);” sollte das Skript sein, wo die “Fälle” auflisten. Ich denke, dass ich die “WP_List_Table” -class erweitern muss, aber ich bin mir nicht sicher, und ich kann das im Internet nicht finden.

Danke vielmals

Solutions Collecting From Web of "Erstellen Sie eine benutzerdefinierte WP_List_Table in post_type"

Sie können den pre_get_posts Filter verwenden, um angeforderte Posts zu ändern. Dieser Filter funktioniert auch im Admin-Bereich. Sie müssen sich also nicht die Mühe machen, eine neue Post-List-Tabellenklasse zu erstellen

Als erstes fügen wir der URL Ihrer ‘Meine Fälle’ Seite eine Abfrage-Variable hinzu:

 function register_adminMenu(){ add_submenu_page('edit.php?post_type=case&mycases=mine', 'My Cases', 'My Cases', 'manage_options', 'my_cases', 1); } 

Wenn dieser Wert festgelegt ist, fügen Sie den Filter hinzu:

 if ( !empty( $_GET['mycases'] ) ) { add_filter( 'pre_get_posts', function( $query ) { if ( is_main_query() && is_post_type_archive('case') && is_admin() ) { $query->set( 'author', $your_user_id ); } }); } 

Denken Sie daran, die Benutzer-ID festzulegen!

Aber warten Sie, Sie wollen nur Ihre Fälle, aka Fällen mit einem bestimmten Autor zeigen? Wenn das der Fall ist, brauchen wir nicht einmal den Filter!

 function register_adminMenu(){ add_submenu_page('edit.php?post_type=case&author='. get_current_user_id(), 'My Cases', 'My Cases', 'manage_options', 'my_cases', 1); }