Existe-t-il un moyen de remplacer l'objet WP_List_Table d'un type de publication pour afficher ledit type de publication différemment sur la page Admin edit.php?
Non, vous ne pouvez pas remplacer la table de liste. Il n'y a pas de filtre, tout est codé en dur.
Mais vous pouvez modifier le type de publication registration , définissez show_ui
sur FALSE
pour empêcher la page intégrée et ajoutez une page personnalisée pour la liste de types de publication afin d'afficher les éléments modifiables.
add_action( 'wp_loaded', function(){
register_post_type(
'test',
array(
'labels' => array(
'name' => 'TEST'
),
'public' => TRUE,
'show_ui' => FALSE
)
);
});
add_action( 'admin_menu', function(){
add_object_page(
'TEST',
'TEST',
'edit_test',
'test',
function(){
echo 'test'; // list post type items here
}
);
});
Résultat
Cet exemple est appliqué au type de poste post
. Ceci exploite les filtres WP_Posts_List_Table
et views-edit-{$post_type}
. Cela ne semble pas être la meilleure solution, mais cela fonctionne:
Assurez-vous que la classe est chargée sur votre page:
if(!class_exists('WP_List_Table')){
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
}
if(!class_exists('WP_Posts_List_Table')){
require_once( ABSPATH . 'wp-admin/includes/class-wp-posts-list-table.php' );
}
Etend la classe WP_Posts_List_Table
pour supprimer la table de liste et définir le contenu personnalisé:
class wpse_CustomTable extends WP_Posts_List_Table
{
// remove search box
public function search_box( $text, $input_id ){ }
// Your custom list table is here
public function display() {
echo "Test";
}
}
Utilisez-le dans un crochet de filtre:
// hook into `views-edit`
add_filter( 'views_edit-post', "sstssfb_custom_list_table");
// Override the post table object
function sstssfb_custom_list_table() {
global $wp_list_table;
$mylisttable = new wpse_CustomTable();
$wp_list_table = $mylisttable ;
}
Résultat: