事实上,我昨天也遇到了类似的问题。我正在处理的一个主题是在标题中添加500多行内部样式,这绝对让我抓狂!我最终在网上找到了一个聪明的解决方案来解决这个问题,您可以将其用于CSS。我将在下面解释JavaScript方面。
--- :: CSS :: ---
这段代码的工作原理有几个关键点。由于您需要处理CSS文件中的变量,我们需要确保给定的文件支持PHP
and 可以访问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”发出警报。