2012-09-17 49 views
0

所以我一直試圖讓插件腳本/ css加載只在需要時。我有一個名爲「審查」的帖子,下面在我的functions.php我試圖加載插件只有在職位與catagory「審查」,而不是,頁面/ post/home screen..nothign加載。任何可能的幫助?wordpress加載插件css/js在functions.php瓦特/條件標籤

add_action('init', 'stopmyrpjs', 100); 
function stopmyrpjs() { 
if (!in_category('review')){ 
    remove_action('wp_head', 'myrp_load_necessary_js'); 
    remove_action('wp_head', 'myrp_track_traffic'); 
     wp_deregister_script('myrp-stuff'); 
    wp_dequeue_script('jtip'); 
    wp_dequeue_script('jquery-MetaData'); 
    wp_dequeue_script('jquery-ui'); 
    wp_dequeue_script('myrp-stuff'); 
    wp_dequeue_script('jquery-ui-accordion'); 
    wp_dequeue_script('jscolor'); 
    wp_dequeue_script('sorttable'); 
    wp_dequeue_script('jquery-MetaData'); 
    wp_dequeue_script('jquery-rating'); 
    }} 

編輯::我有工作,除了一個事實,即它不會對is_category或in_category工作..我已經得到了工作低於:

add_action('wp_print_scripts', 'stopmyrpjs', 100); 
function stopmyrpjs() { 
if (!is_single()){ 
    remove_action('wp_head', 'myrp_load_necessary_js'); 
    remove_action('wp_head', 'myrp_track_traffic'); 
wp_deregister_script('myrp-stuff'); 
    wp_dequeue_script('jtip'); 
    wp_dequeue_script('jquery-MetaData'); 
    wp_dequeue_script('jquery-ui'); 
    wp_dequeue_script('myrp-stuff'); 
    wp_dequeue_script('jquery-ui-accordion'); 
    wp_dequeue_script('jscolor'); 
    wp_dequeue_script('sorttable'); 
    wp_dequeue_script('jquery-MetaData'); 
    wp_dequeue_script('jquery-rating'); 
    }} 

仍然希望我能有這個對某些類別的工作,而不是..

+0

在互聯網上發現,in_category只用於「循環」,任何其他選項相同的功能,但在functions.php? –

回答

1

我想你想is_category

這可以在循環外使用,並返回一個布爾值取決於銅rrent視圖。

更新:在你的行動掛鉤

仔細看,爲什麼「它不工作」的原因是因爲行動的優先次序。你試圖在'init'操作中取消註冊和取出腳本,這可能在腳本本身實際註冊和/或入隊之前觸發。

我也猜測外部腳本正在被各種插件註冊,每個插件都有自己的動作鉤子和優先級。

而是使用init掛鉤,嘗試將其更改爲「wp_footer」,以確保所有的腳本由它們相應的插件加載,可以刪除任何多餘的腳本之前:

if (!is_category('review')) 
{ 
    remove_action('wp_head', 'myrp_load_necessary_js'); 
    remove_action('wp_head', 'myrp_track_traffic'); 
    add_action('wp_footer', 'stopmyrpjs'); 
} 
function stopmyrpjs(){ 
    wp_deregister_script('myrp-stuff'); 
    wp_dequeue_script('jtip'); 
    wp_dequeue_script('jquery-MetaData'); 
    wp_dequeue_script('jquery-ui'); 
    wp_dequeue_script('myrp-stuff'); 
    wp_dequeue_script('jquery-ui-accordion'); 
    wp_dequeue_script('jscolor'); 
    wp_dequeue_script('sorttable'); 
    wp_dequeue_script('jquery-MetaData'); 
    wp_dequeue_script('jquery-rating'); 
} 

另外,請記住,wp_dequeue_script是一個相對較新的功能(從版本3.1開始)。如果由於某種原因您仍然遇到問題,請嘗試將wp_dequeue_script更改爲wp_deregister_script。

一些進一步的檢查將確保函數本身正在觸發,並且適當的視圖會使您的條件評估爲true。

希望這會有所幫助,祝你好運。

+0

當前視圖?我在Codex上看到,如果它是Catagory Archive頁面,我已經嘗試過is_category('review')並且它沒有工作。我應該將add_action添加到init還是wp_print_scripts?不知道爲什麼這是困難的,那麼它應該是.. –

+0

我已經添加了更多的信息給你,可能有幫助。我認爲這可能只是Wordpress的優先級問題。此外,您應該確保這不是一個緩存問題,並禁用任何緩存插件,以及清除瀏覽器緩存。除此之外,我沒有想法。 – maiorano84

+0

我已經嘗試了你的建議,似乎沒有與出列或取消註冊工作..我已經得到它使用我編輯在OP中的示例工作,但是,它仍然不適用於is_category或in_category。但是,我會接受你的回答 –

0

Script Logic是一個WordPress插件,可讓您完全控制所有JavaScript和CSS文件。您可以通過使用WP的conditional tags僅在需要的頁面上有條件地加載CSS和JS文件。