解决了所有问题后,我陷入了WordPress中一个非常简单的问题。这是排列样式表和js脚本。我正在拼命寻找解决方案。我不知道为什么这不起作用。我想我遵守了规范中的规则,但它并没有加载。即使我打开页面源代码来查找这些文件但没有找到。 文件名和位置如下:
popup_plugin
|---- assets\
|---css\
|--- styles.css
js结构与上面相同
现在这里是我正在尝试的代码。我正在使用单例模式来实例化类。
add_action( 'plugins_loaded', array(SMARTPOPUP::getInstance(), 'init') );
class SMARTPOPUP
{
private static $instance = null;
public function init(){
add_action('wp_enqueue_scripts', array($this, 'frontEndAssets'));
}
public function frontEndAssets(){
wp_enqueue_style(
'wpsgdprcss',
plugin_dir_url( __FILE__ ) . 'assets/css/styles.css',
array()
);
wp_enqueue_script(
'wpsgdprjs',
plugin_dir_url( __FILE__ ) . 'assets/js/scripts.js',
array(),
false
);
$localizedata = array(
'ajaxurl' => admin_url('admin-ajax.php'),
'noncesecure' => wp_create_nonce(WP_SMART_GDPR_SLUG),
);
wp_localize_script( 'wpsgdprjs', 'wpsgdprdata', $localizedata );
}
public static function getInstance(){
if(!isset(self::$instance)){
self::$instance = new self();
}
return self::$instance;
}
}
答案 0 :(得分:0)
尝试以下代码
menu-item
答案 1 :(得分:0)
function custom_plugin_enqueue() {
wp_enqueue_style( 'wpsgdprcss', plugin_dir_url( __FILE__ ) . 'assets/css/styles.css' );
wp_enqueue_script( 'wpsgdprjs', plugin_dir_url( __FILE__ ) . 'assets/js/scripts.js' );
}
add_action('wp_enqueue_scripts', 'custom_plugin_enqueue');
答案 2 :(得分:0)
我认为你的代码应该可行,所以我测试了它。具体来说,我测试了以下内容:
<?php /*
Plugin Name: Junk
*/
add_action( 'plugins_loaded', array(SMARTPOPUP::getInstance(), 'init') );
class SMARTPOPUP
{
private static $instance = null;
public function init(){
add_action('wp_enqueue_scripts', array($this, 'frontEndAssets'));
}
public function frontEndAssets(){
wp_enqueue_style(
'wpsgdprcss',
plugin_dir_url( __FILE__ ) . 'assets/css/styles.css',
array()
);
wp_enqueue_script(
'wpsgdprjs',
plugin_dir_url( __FILE__ ) . 'assets/js/scripts.js',
array(),
false
);
$localizedata = array(
'ajaxurl' => admin_url('admin-ajax.php'),
'noncesecure' => wp_create_nonce('WP_SMART_GDPR_SLUG'),
);
wp_localize_script( 'wpsgdprjs', 'wpsgdprdata', $localizedata );
}
public static function getInstance(){
if(!isset(self::$instance)){
self::$instance = new self();
}
return self::$instance;
}
}
这会生成以下样式和脚本元素:
<link rel='stylesheet' id='wpsgdprcss-css' href='http://localhost/wp-content/plugins/junk/assets/css/styles.css?ver=4.9.6' type='text/css' media='all' />
<script type='text/javascript'>
/* <![CDATA[ */
var wpsgdprdata = {"ajaxurl":"http:\/\/localhost\/wp-admin\/admin-ajax.php","noncesecure":"8b77af0183"};
/* ]]> */
</script>
<script type='text/javascript' src='http://localhost/wp-content/plugins/junk/assets/js/scripts.js?ver=4.9.6'></script>
我做的唯一更改是将WP_SMART_GDPR_SLUG替换为'WP_SMART_GDPR_SLUG',因为您可能忘记为其添加定义。
您的代码本身没有任何问题。
您确定您的代码正在执行吗?
我认为这不重要,但我使用PHP 7.1.17运行WordPress版本4.9.6。