WordPress : Comment obtenir l’objet $post disponible dans functions.php pour localiser le script ?
J’ai un problème avec un wp_localize_script dans mon fichier functions.php. J’essaie d’obtenir un script localisé pour un type de publication personnalisé (« galerie »), cependant, l’erreur apparaît que j’essaie d’accéder à une propriété de non-objet faisant référence à $post. Je suppose que la variable $ post n’est pas définie pour le moment, mais je ne sais pas quoi faire pour résoudre ce problème. Dois-je utiliser une autre action de crochet, etc.? Si oui, quoi ? Donc, fondamentalement, j’ai deux questions – que dois-je faire pour corriger ce code et la seconde (plus générale) – existe-t-il une bonne pratique pour utiliser wp_localize_script (où doit-il être placé, etc.) ?
function profolio_localize_script () {
global $post;
if ($post->post_type==="my-gallery") {
$layoutType=get_post_meta($post->ID,"gallery_layout",true);
$data_array=array("layoutMode"=>$layoutType);
wp_enqueue_script("custom", get_template_directory_uri () . "/js/custom.js", array("jquery","imagesLoaded","isotope"));
wp_localize_script("custom","myGallery",$data_array);
}
}
add_action("wp", "profolio_localize_script");
Solution n°1 trouvée
Le wp
crochet d’action se déclenche assez tôt, avant que l’ $post
objet ne soit défini. Je suggérerais d’utiliser le crochet approprié à la wp_enqueue_scripts
place et de modifier votre code pour:
function profolio_localize_script () {
if ( is_singular( 'my-gallery' ) ) {
$layoutType = get_post_meta( get_queried_object_id(), 'gallery_layout', true );
// Rest of code
}
}
0 commentaire