web-dev-qa-db-fra.com

Comment puis-je mettre en file d'attente un script pour le type de post CPT simple avec plugin?

J'écris un plugin qui définit ses propres "propriétés" CPT et je veux mettre en file d'attente un script spécifiquement dans les posts individuels.

Il fonctionne sans ma tentative de déclaration conditionnelle, mais je n'ai pas besoin de le charger sur chaque page et j'aimerais donc que cela soit conditionnel.

Ce code est dans la racine de mon plugin juste après mon includes.

if ( 'properties' == get_post_type() ) {
    if (wp_script_is('owl.carousel.js', 'enqueued')) {
        return;
    } else {
        wp_register_script('owl.carousel.min.js', plugin_dir_url(__FILE__) . 'js/owl.carousel.min.js');
        wp_enqueue_script('owl.carousel.min.js');
    }
}

J'ai aussi essayé is_sigular('properties') mais cela n'a pas fonctionné non plus.

Je dois manquer quelque chose de stupide ...

2
Chris Stage

Assurez-vous que votre code s'exécute dans wp_enqueue_scripts action hook.

Consultez également votre pseudo de script 'owl.carousel.js'. Dans wp_script_is(), ce n'est pas la même chose que dans les 2 dernières fonctions dans lesquelles vous l'avez entré comme 'owl.carousel.min.js'.

add_action( 'wp_enqueue_scripts', 'enqueue_properties_scripts' );

function enqueue_properties_scripts() {
    if ( 'properties' === get_post_type() ) {
        if ( wp_script_is( 'owl.carousel.min.js', 'enqueued' ) ) {
            return;

        } else {
            wp_register_script( 'owl.carousel.min.js', plugin_dir_url( __FILE__ ) . 'js/owl.carousel.min.js' );
            wp_enqueue_script( 'owl.carousel.min.js' );
        }
    }
}
1
ClemC