J'ai un site avec quelques types de messages personnalisés. Ceux-ci sont tous enregistrés d'une manière très similaire partageant la plupart des attributs:
const ARGS = [
'hierarchical' => true,
//'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
//'publicly_queryable' => true,
'capability_type' => 'page',
'show_in_rest' => false,
];
Par exemple, les CPT order
et person
sont enregistrés comme ceci
private static function register_order()
{
$args = array_merge(
[
'label' => __( 'order', 'X' ),
'labels' => [...],
'supports' => ['title', 'editor', 'author'],
],
self::ARGS
);
register_post_type( 'order', $args );
}
private static function register_person()
{
$args = array_merge(
[
'label' => __( 'person', 'X' ),
'labels' => [...],
'supports' => ['title', 'author'],
],
self::ARGS
);
register_post_type( 'person', $args );
}
Cependant, quand je suis dans le wp-admin, je ne vois actuellement que person
s alors que order
s me donne une liste vide.
En déboguant ceci avec la barre de débogage et le moniteur de requêtes, j'obtiens la requête principale suivante pour order
(rédigé le post_status
pour les deux requêtes)
SELECT wp_posts.ID, wp_posts.post_parent
FROM wp_posts
WHERE 1=1
AND (wp_posts.ID = '0')
AND wp_posts.post_type = 'order'
AND (...)
ORDER BY wp_posts.menu_order ASC, wp_posts.post_title ASC
Et la requête pour person
est
SELECT wp_posts.ID, wp_posts.post_parent
FROM wp_posts
WHERE 1=1
AND wp_posts.post_type = 'person'
AND (...)
ORDER BY wp_posts.menu_order ASC, wp_posts.post_title ASC
Maintenant, je comprends assez bien SQL pour savoir que cette ligne
AND (wp_posts.ID = '0')
c'est la raison pour laquelle je n'obtiens aucun résultat. Je n'ai juste aucune idée de pourquoi c'est là. Je n'ai pas de hook pre_get_posts
défini, j'ai désactivé tous les plugins sauf celui-ci, pas de changement.
Comme mmm a souligné dans les commentaires , order
ne doit pas être utilisé comme un nom pour un type de message personnalisé, car il peut "interférer avec d'autres fonctions de WordPress". En savoir plus dans le Codex :
Types de messages réservés Les types de messages suivants sont réservés et déjà utilisés par WordPress.
post
page
attachment
revision
nav_menu_item
custom_css
customize_changeset
En outre, les types de publication suivants ne doivent pas être utilisés car ils interfèrent avec d'autres fonctions de WordPress.
action
author
order
theme