我想知道添加自定义的最佳用途JS/CSS
主题。
我构建了一个小插件,其中有一个部分允许用户添加CSS/JS
他们的主题。现在我想知道哪种方法是最好的:
将所有代码保存在自定义数据库中,并将其作为普通代码加载到页眉/页脚中。
将所有代码保存在自定义js/css文件(无DB)中,并将文件添加到/页眉/页脚中
注意:这些自定义JS/CSS文件是用户自定义构建的,因此用户可以在插件中添加自己的规则。
哪个是更好、最安全的解决方案?
我想知道添加自定义的最佳用途JS/CSS
主题。
我构建了一个小插件,其中有一个部分允许用户添加CSS/JS
他们的主题。现在我想知道哪种方法是最好的:
将所有代码保存在自定义数据库中,并将其作为普通代码加载到页眉/页脚中。
将所有代码保存在自定义js/css文件(无DB)中,并将文件添加到/页眉/页脚中
注意:这些自定义JS/CSS文件是用户自定义构建的,因此用户可以在插件中添加自己的规则。
哪个是更好、最安全的解决方案?
事实上,我昨天也遇到了类似的问题。我正在处理的一个主题是在标题中添加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”发出警报。您可能遇到了几种不同的方法来包含JavaScript和CSS。
中推荐了一种主要方法WordPress Codex.
向WordPress生成的页面和WordPress主题或插件添加JavaScript的安全推荐方法是使用wp_enqueue_script(). 此函数包含脚本(如果尚未包含),并安全地处理依赖项。
向WordPress生成的页面中添加/排队样式表文件的安全方法。使用wp_enqueue_style( $handle, $src, $deps, $ver, $media );
此函数wp_enqueue_style() 不返回值。
I\'m creating my own theme framework, and I want to organize my code, separating the partials files from the pages.But I want to do that and still use the native functions get_header(), get_footer() and get_sidebar().How can I change this functions to loo