最好使用插件将用户生成的JS/CSS添加到主题中

时间:2015-08-04 作者:user759235

我想知道添加自定义的最佳用途JS/CSS 主题。

我构建了一个小插件,其中有一个部分允许用户添加CSS/JS 他们的主题。现在我想知道哪种方法是最好的:

将所有代码保存在自定义数据库中,并将其作为普通代码加载到页眉/页脚中。

将所有代码保存在自定义js/css文件(无DB)中,并将文件添加到/页眉/页脚中

注意:这些自定义JS/CSS文件是用户自定义构建的,因此用户可以在插件中添加自己的规则。

哪个是更好、最安全的解决方案?

2 个回复
SO网友:Howdy_McGee

事实上,我昨天也遇到了类似的问题。我正在处理的一个主题是在标题中添加500多行内部样式,这绝对让我抓狂!我最终在网上找到了一个聪明的解决方案来解决这个问题,您可以将其用于CSS。我将在下面解释JavaScript方面。

--- :: CSS :: ---

这段代码的工作原理有几个关键点。由于您需要处理CSS文件中的变量,我们需要确保给定的文件支持PHPand 可以访问WordPress功能,以便获取任何预设。我们无法使用.css 因此,我们需要欺骗服务器,使其将PHP文件显示为CSS。

这纯粹是出于测试目的:创建一个名为customcss.php 使用以下代码,请注意PHPheader() 需要告诉服务器我们将要显示的功能text/css:

<?php
    header( "Content-type: text/css; charset: UTF-8" );
    $test = \'blue\';
?>

body    {color: <?php echo $test; ?>;}
接下来,我们需要在WordPress的上下文中加载此文件,以便我们仍然可以访问以下函数get_post_meta() 或任何global 变量。让我们使用WP AJAX. 注意,当包含或需要时,我们需要使用绝对路径。这将查找您的插件文件夹并进入/css/ “css”php文件的目录。

function plugin_dynamicss() {
    include_once( plugin_dir_path( __FILE__ ) . \'/css/customcss.php\' );
    exit;
}
add_action( \'wp_ajax_plugin_dynamicss\', \'plugin_dynamicss\' );
add_action( \'wp_ajax_nopriv_plugin_dynamicss\', \'plugin_dynamicss\' );
最后,我们需要通过wp_enqueue_scripts 挂钩:

function plugin_enqueue_css() {
    wp_enqueue_style(
        \'dynamicss\', admin_url( \'admin-ajax.php\' ) . \'?action=plugin_dynamicss\',
        array(),
        \'\',
        \'screen\'
    );
}
add_action( \'wp_enqueue_scripts\', \'plugin_enqueue_css\' );
<小时>

--- :: JavaScript :: ---

使用变量将JS排队要容易得多wp_localize_script(). 你需要做的就是register the script, localize the script 有数据,最后enqueue the script.

function plugin_enqueue_js() {
    wp_register_script( \'plugin_js\', plugin_dir_path( __FILE__ ) . \'/js/customjs.js\' );

    $data = array(                      // Define Our Data
        \'robert\'    => \'bobbert\',
        \'nine\'      => \'nein\'
    );

    wp_localize_script( \'plugin_js\', \'plugin_data\', $data );    // Localize Our Data

    wp_enqueue_script( \'plugin_js\' );
}
add_action( \'wp_enqueue_scripts\', \'plugin_enqueue_js\' );
的第二个参数wp_localize_script() 实际上定义了我们的JS对象名。在我们的对象中,如果我们想要获取并使用其中一个值,我们可以说:alert( plugin_data.robert ); 将向屏幕“bobbert”发出警报。

SO网友:AddWeb Solution Pvt Ltd

您可能遇到了几种不同的方法来包含JavaScript和CSS。

中推荐了一种主要方法WordPress Codex.

向WordPress生成的页面和WordPress主题或插件添加JavaScript的安全推荐方法是使用wp_enqueue_script(). 此函数包含脚本(如果尚未包含),并安全地处理依赖项。

向WordPress生成的页面中添加/排队样式表文件的安全方法。使用wp_enqueue_style( $handle, $src, $deps, $ver, $media ); 此函数wp_enqueue_style() 不返回值。

结束