2014-02-25 29 views
0

我的問題是我在使用Ajax加載的WordPress主題中使用動態CSS文件。但是,它也爲後端加載這個相同的動態CSS文件。我如何修改我的代碼,它只爲前端加載動態的css文件,而不是爲後端加載。這裏是我的代碼:WordPress僅在前端加載動態CSS

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'); 

}

回答

0

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'); 
} 

任何內只會有如果不能在管理面板執行。

http://codex.wordpress.org/Function_Reference/is_admin

+0

嗯..似乎並沒有工作。由於某些原因,如果我將代碼放入is_admin()函數中,它不會加載整個css文件。 – Kimmo

+0

不要在'if(!is_admin()){'中包含函數dynamic_css()',admin-ajax.php的調用將來自admin。我在下面添加了一個工作示例。 – soderlind

0

這裏是有其內部註釋工作示例:

<?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