J'ai hérité d'un plugin Wordpress qui rend les champs personnalisés disponibles lors de la modification des pages et/ou des messages. Il ajoute un contenu légèrement différent pour les pages que pour les publications. Le plugin détermine la page ou après ce qui suit:Déterminer si je suis en train d'éditer une page ou un post dans Wordpress
if(preg_match('|post.php|i', $_SERVER['SCRIPT_NAME']) || preg_match('|post-new.php|i', $_SERVER['SCRIPT_NAME'])) {
add_meta_box('qaws_' . $cg ,$group, 'qaws_admin_meta', 'post', 'advanced', 'core');
} elseif(preg_match('|page.php|i', $_SERVER['SCRIPT_NAME']) || preg_match('|page-new.php|i', $_SERVER['SCRIPT_NAME'])) {
add_meta_box('qaws_' . $cg ,$group, 'qaws_admin_meta', 'page', 'advanced', 'core');
}
Cela a bien fonctionné dans les anciennes versions de Wordpress, car ils ont utilisé post.php dans l'URL lors de l'édition et les messages page.php lors de l'édition des pages. Maintenant, cependant, Wordpress ne le fait pas. Les messages et les pages sont édités avec une URL qui ressemble à: post.php?post=4&action=edit
, le seul identifiant possible dans l'URL est le numéro de poste. Alors comment identifier si je suis en train de modifier une page ou un post? Y at-il une fonction Wordpress qui peut facilement me dire cela? Est-ce la seule option pour saisir le numéro de poste et en quelque sorte le vérifier pour voir ce que c'est?
Comment aborderiez-vous cela?
EDIT: Voici ce que je faisais ... plutôt que de faire le preg_match je récupérai l'id global $, utilisé get_all_page_ids()
pour obtenir une liste de toutes les pages et correspondait à l'ID $ à les identifiants dans le tableau get_all. S'il y a une correspondance, faites la page add_meta_box, sinon faites le post.
J'ai également déplacé la vérification d'une boucle dans laquelle il a enregistré un groupe à l'heure pour rendre la page. Maintenant, je mets un drapeau juste au début et dans la boucle les rends ces méta_boxes juste vérifient pour voir si ce drapeau est isset.
Merci pour la réponse. C'est une bonne réponse! Le seul problème avec ceci est si je crée une nouvelle page ou poste, alors je n'ai pas une page ou un id de publication pour tester contre. Cependant, je gère déjà cela avec: preg_match ('| post_type = page | i', $ _SERVER ['QUERY_STRING']) afin que je puisse utiliser la fonction que vous suggérez avec ce match preg et que je sois toujours prêt à partir. Merci! – Lothar