如何使函数中的$POST对象可用来本地化脚本?

时间:2015-01-15 作者:user3695711

我的函数中的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");

1 个回复
最合适的回答,由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 
    }
}

结束

相关推荐

Responsive Admin Themes

我在看这个管理主题的示例(http://themepixels.com/main/themes/demo/webpage/shamcey/dashboard.html). 至于标签为“Navigation”的左侧管理栏,有没有一种方法可以在不使用插件的情况下实现这种类型的左侧仪表板管理菜单?我想用css、js或Jquery来实现这一点,任何处理编码的东西都可以。