WordPress仅在前端加载动态css
我的问题是,我在用Ajax加载的WordPress主题中使用动态css文件。但是,它也为后端加载相同的动态css文件。如何修改代码,使其仅为前端加载动态css文件,而不为后端加载。这是我的密码:WordPress仅在前端加载动态css,css,ajax,wordpress,dynamic,Css,Ajax,Wordpress,Dynamic,我的问题是,我在用Ajax加载的WordPress主题中使用动态css文件。但是,它也为后端加载相同的动态css文件。如何修改代码,使其仅为前端加载动态css文件,而不为后端加载。这是我的密码: wp_enqueue_style('dynamic-css', admin_url('admin-ajax.php?action=dynamic_css')); function dynaminc_css() { require(get_template_directory().'/dynam
wp_enqueue_style('dynamic-css',
admin_url('admin-ajax.php?action=dynamic_css'));
function dynaminc_css() {
require(get_template_directory().'/dynamic-css.php');
exit;
}
add_action( 'wp_ajax_dynamic_css', 'dynaminc_css' );
add_action( 'wp_ajax_nopriv_dynamic_css', 'dynaminc_css' );
}您正在寻找的是is_admin()
函数
if(!is_admin()){
wp_enqueue_style('dynamic-css',
admin_url('admin-ajax.php?action=dynamic_css'));
function dynaminc_css() {
require(get_template_directory().'/dynamic-css.php');
exit;
}
add_action( 'wp_ajax_dynamic_css', 'dynaminc_css' );
add_action( 'wp_ajax_nopriv_dynamic_css', 'dynaminc_css' );
}
其中的任何内容只有在不在管理面板中时才会执行
下面是一个带有内联注释的工作示例:
<?php
/*
Plugin Name: Dynamic CSS using Ajax
Plugin URI: https://github.com/soderlind/
Description:
Author: Per Soderlind
Version: 0.1.0
Author URI: http://soderlind.no
*/
if ( !defined( 'ABSPATH' ) ) {
die( 'Cheating, are we?' );
}
define( 'DYNAMICCSS_VERSION', '0.1.0' );
function dynamic_css_enqueue() {
wp_enqueue_style( 'dynamic-flags', admin_url( 'admin-ajax.php' ).'?action=dynamic_css&_wpnonce=' . wp_create_nonce( 'dynamic-css-nonce' ), false, DYNAMICCSS_VERSION );
}
function dynamic_css() { // Don't wrap function dynamic_css() in if(!is_admin()){ , the call from admin-ajax.php will be from admin
$nonce = $_REQUEST['_wpnonce'];
if ( ! wp_verify_nonce( $nonce, 'dynamic-css-nonce' ) ) {
die( 'invalid nonce' );
} else {
/**
* NOTE: Using require or include to call an URL ,created by plugins_url() or get_template_directory(), can create the following error:
* Warning: require(): http:// wrapper is disabled in the server configuration by allow_url_include=0
* Warning: require(http://domain/path/flags/css.php): failed to open stream: no suitable wrapper could be found
* Fatal error: require(): Failed opening required 'http://domain/path/css.php'
*/
require dirname( __FILE__ ) . '/css.php'; //use echo, printf etc in css.php and write to standard out.
}
exit;
}
add_action( 'wp_ajax_dynamic_css', 'dynamic_css' );
add_action( 'wp_ajax_nopriv_dynamic_css', 'dynamic_css' );
add_action( 'wp_enqueue_scripts', 'dynamic_css_enqueue' ); //wp_enqueue_scripts = load on front-end
Hmm。。似乎不起作用。由于某些原因,如果我将代码放入is_admin()函数中,它不会加载整个css文件。不要在中包装函数dynamic_css()
,如果(!is_admin()){
,则来自admin-ajax.php的调用将来自admin。我在下面添加了一个工作示例。