我的函数中的wp\\u localize\\u脚本有问题。php文件。我正在尝试获取自定义帖子类型(“gallery”)的本地化脚本,但是,出现了一个错误,即我正在尝试访问引用$post的非对象属性。我假设$post变量目前还没有定义,但我不知道应该怎么做才能解决这个问题。我应该使用另一个钩子动作等吗?如果是,什么?因此,基本上,我有两个问题-我应该如何修复此代码和第二个问题(更一般的问题)-是否有使用wp\\u localize\\u脚本的良好实践(应该放置在哪里等)?
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");
最合适的回答,由SO网友:TheDeadMedic 整理而成
这个wp
动作钩很早就开火了$post
对象已设置。我建议使用合适的钩子wp_enqueue_scripts
而是将您的代码修改为:
function profolio_localize_script () {
if ( is_singular( \'my-gallery\' ) ) {
$layoutType = get_post_meta( get_queried_object_id(), \'gallery_layout\', true );
// Rest of code
}
}