web-dev-qa-db-fra.com

Champs personnalisés avancés - à afficher lorsqu'un modèle spécifique est utilisé?

Je sais comment afficher mes groupes de champs sur des pages spécifiques (emplacement d'affichage: la page est égale à myPage).

J'ai plusieurs modèles sur mon site et je souhaite afficher le groupe de zones X lorsque la page utilise le modèle Y. Est-ce possible?

1
MikeMason

Difficile de donner une réponse exacte sans partager votre code, mais utiliser is_page_template() dans une instruction if vous aidera à déterminer à quel moment vous affichez votre groupe de champs personnalisés:

if ( is_page_template( 'template-y.php' ) ) {
    # Display Field Group X code here...
}
else {
    # Do something else...
}

Encore une fois, si vous pouviez fournir votre code, je pourrais vous donner une meilleure réponse.

3

Vous dites que vous savez déjà comment ajouter des champs. Une fois que vous ajoutez la metabox contenant ces champs, ajoutez le code suivant. Cela basculera l'affichage de la métabox lorsque le modèle de page est modifié. Vous devez modifier l'id de la métabox et le nom du fichier du modèle de page qui, une fois sélectionné, devrait afficher la métabox. Inspectez la page pour trouver l'id de metabox.

Ainsi, si la metabox a un identifiant de "metabox_id" et que vous voulez qu'elle apparaisse lorsque le nom de fichier du modèle de page sélectionné est "template-file-name.php", utilisez ce qui suit.

Dans functions.php

add_action('admin_enqueue_scripts', 'my_admin_script');

function my_admin_script() {
    wp_enqueue_script('my-admin', get_bloginfo('stylesheet_directory').'/js/custom-admin.js', array('jquery'), '1.0.0', true);
}

Dans custom-admin.js

(function($){
    $(document).ready(function() {

    $('#page_template').change(function() {
        $('#metabox_id').toggle($(this).val() == 'template-file-name.php'); //Change
    }).change();

    });
})(jQuery);
1
depiction