PHP与一些JS代码混合以更新WordPress主题设置

时间:2013-12-10 作者:fraxool

我正在研究我的第一个Wordpress主题,但我在代码中遇到了一个小问题。

事实上,我在管理中创建了一个小页面来更改主题的一些设置,例如,修改主题的背景图像,这些图像显示在一个名为"Vegas". 这一切都很好,但我认为我并没有真正使用好的方法来实现我的代码。

在标题中。php文件,我写了以下内容:

        <?php
        if(get_theme_option("bg_slideshow") == 1):
        ?>
        /* Background Images */
        var bg_slideshow = jQuery(".bg_slideshow").attr("data-active");
        if(bg_slideshow == 1) {
            jQuery.vegas(\'slideshow\', {
                delay: 8000,
                backgrounds:[
                    <?php echo get_bg_images_url(); ?>
                ]
            })(\'overlay\');
        }
        <?php
        endif;
        ?>
正如你所看到的,我这里混合了一些PHP和一些JS代码。。。所以我得到了带有PHP函数的主题选项,并像这样更新了我的JS代码。有人能帮助我改进代码吗?或者有人能告诉我如何工作(或者分离代码)才能获得好的东西吗?

1 个回复
SO网友:mathielo

在我看来,您可以最小化代码混合,存储get_theme_option("bg_slideshow") 转换为JS变量,尽管它不能从整体上解决问题:

var themeOptBgSlideshow = <?php echo get_theme_option("bg_slideshow"); ?>;

if(themeOptBgSlideshow == 1){
    /* Background Images */
    var bg_slideshow = jQuery(".bg_slideshow").attr("data-active");
    if(bg_slideshow == 1) {
        jQuery.vegas(\'slideshow\', {
            delay: 8000,
            backgrounds:[
                <?php echo get_bg_images_url(); ?>
            ]
        })(\'overlay\');
    }
}
但如前所述,这种变通方法只会最大限度地减少代码混合。如果您真的想分离代码(这一直是一个很好的实践),我认为唯一的选择是进行AJAX调用。这样,JS可以请求一个PHP页面/函数,该页面/函数只返回get_theme_option("bg_slideshow"). 按照上述示例中的建议,将返回值分配给任何变量,就可以开始了。

嗯,我认为AJAX对此的调用是一个有点极端的解决方案。但无论如何,这取决于你决定哪个解决方案最适合你。

结束

相关推荐

Include jQuery UI as a whole

是否可以将jQuery UI作为一个整体,而不是:wp_enqueue_script(\'jquery-ui-core\'); wp_enqueue_script(\'jquery-effects-core\'); // a lot of other jquery ui imports.... 我在codex中进行了搜索,找到了包含脚本的完整列表,但找不到将完整jQuery UI版本作为一个导入包含在内的方法,如:wp_enqueue_script(\'jquery-ui\');