2014年11月14日 星期五

[WordPress] 用Widget logic 顯示不同側欄 不同小工具

[WordPress] 在不同頁面 不同文章 不同類別 顯示不同側欄 不同小工具

在架設遊戲資料站的時候,

遇到了一個問題,

就是無法在不同頁面顯示不同的小工具側欄。


問題:

我要在頁面(page)、分類頁面(category)、文章頁面(single)都能顯示同一個側邊欄位或是小工具。

解決方法:

一、下載並安裝外掛「Widget logic」。















二、安裝後啟用。

你將會發現在模組(小工具)下方都會出現
Widget Logic 的選擇欄位。




三、設定語法。


有些基礎邏輯你得先知道:


  • (NOT)以反向邏輯,例如!is_home()為真時,這不是主頁。
  • ||(OR)合併的條件。x或y的值為TRUE時,無論X是真還是Y是真實的。
  • &&(AND),使情況更加具體x和y當x是真實的,Y是真實不虛。

這邊有一些語法可以使用。
  • is_home() - 主頁
  • is_single() - 文章頁
  • is_page() - 頁面
  • is_category() - 文章分類頁
  • is_tag() - 文章標籤頁
  • is_archive() - 文章歸檔頁
  • is_404() - 404頁面
  • is_search() - 搜尋頁面
  • is_feed() - 訂閱頁 
  • is_single()&& in_category('地圖') - 在所有文章頁面且在「地圖」的分類中。



也可以用一些「和、或、否」的邏輯判斷來調整,例如:
|| 表示或,&& 表示和,! 表示否。
  • is_home() - 僅主頁顯示
  • !is_home() - 除主頁以外的頁面顯示
  • !is_category(5) - 僅在ID非5的分類顯示
  • is_home() || is_category('baked-goods') - 在主頁或名稱為baked-goods的分類顯示
  • is_page('about') 僅在關於頁顯示

Examples
  • is_home() -- just the main blog page
  • !is_page('about') -- everywhere EXCEPT this specific WP 'page'
  • !is_user_logged_in() -- shown when a user is not logged in
  • is_category(array(5,9,10,11)) -- category page of one of the given category IDs
  • is_single() && in_category('baked-goods') -- single post that's in the category with this slug
  • current_user_can('level_10') -- admin only widget
  • strpos($_SERVER['HTTP_REFERER'], "google.com")!=false -- widget to show when clicked through from a google search
  • is_category() && in_array($cat, get_term_children( 5, 'category')) -- category page that's a descendent of category 5
  • global $post; return (in_array(77,get_post_ancestors($post))); -- WP page that is a child of page 77
  • global $post; return (is_page('home') || ($post->post_parent=="13")); -- home page OR the page that's a child of page 13
Note the extra ';' on the end where there is an explicit 'return'.

舉例:

is_page('world’)||
is_category('概觀')||






is_single()&& in_category('概觀')

在名為「
world」的頁面顯示 以及 在名為「概觀」的分類頁面顯示 以及 在名為「概觀」的分類裏的所有文章頁面顯示。

透過這樣的組合。
就可以在在 不同頁面 不同文章 不同類別 顯示不同側欄。

還有些進階使用,可以在不同使用者顯示不同的小工具,
這就留給需要的人去嘗試拉。


實作:

為了達到我要的顯示側欄,我使用了這一些語法。
is_page('world')||
is_category('概觀')||
is_single()&& in_category('概觀')||
is_category('地圖')||
is_single()&& in_category('地圖')||
is_category('職業')||
is_single()&& in_category('職業')||
is_category('怪物')||
is_single()&& in_category('怪物')||
is_category('物品')||
is_single()&& in_category('物品')

---


在頁面(page) 顯示側邊欄。

在怪物分類(category) 顯示側邊欄。









在怪物分類(category)中的文章頁面(single) 顯示側邊欄。






因為有很多小分類,所以就一個一個弄,
這樣就只會顯示在我要的頁面上了,而不會在其他頁面中出現。

引用 & 參考: