web-dev-qa-db-fra.com

Comment afficher la méta-boîte personnalisée uniquement sur des ID de page spécifiques

J'utilise Champs magiques 2 pour les boîtes de méta personnalisées et les champs personnalisés, mais cette situation concerne toute méta-boîte.

J'ai une méta-boîte personnalisée que je veux afficher sur seulement 3 identifiants de page spécifiques.

function mf_1_remove_meta_boxes() {

    if( !in_array($_GET['post'], array('194','185','2') ) ):
        remove_meta_box( 'mf_1', 'page', 'normal' );
}

METTRE À JOUR

En utilisant la solution de Bainternet , le code fonctionne. Cela étant dit, un nouveau problème est apparu. Lorsqu'une nouvelle page est créée, la boîte de méta est visible immédiatement, puis disparaît une fois la page enregistrée, car l'ID ne correspond pas à un ID spécifié.

MISE À JOUR 2

Le code ci-dessus a été modifié pour corriger le problème avec la boîte de méta apparaissant sur une nouvelle page (non enregistrée). Il a également été modifié pour devenir un code complet et fonctionnel. La méta-boîte sera supprimée pour tous les utilisateurs.

Pour supprimer la boîte méta pour tout le monde sauf les administrateurs:

function mf_1_remove_meta_boxes() {

    if( !is_admin())
        return;

    if( !in_array($_GET['post'], array('194','185','2') ) ):
        remove_meta_box( 'mf_1', 'page', 'normal' );
}
1
Travis Pflanz

Une solution simple et plus propre serait d'utiliser! In_array ex:

function mf_1_remove_meta_boxes() {

    if( !is_admin() && !isset( $_GET['post'] ) )
        return;

    if( !in_array($_GET['post'], array('194','185','2') ) )
        remove_meta_box( 'mf_1', 'page', 'normal' );
}

de cette façon, vous pouvez simplement ajouter les identifiants dans le tableau et autant que vous le souhaitez

2
Bainternet

Essayer:

if($_GET['post'] != 194 || $_GET['post'] != 185 || $_GET['post'] != 2)

Cela devrait fonctionner comme ça.

1
Ciprian