Widget Logic – WordPress plugin 外掛推薦下載

點擊下載

小部件邏輯

外掛Plugin描述

此外掛Plugin為每個小部件提供一個名為“小部件邏輯”的額外控製字段,可讓您控制頁面小部件將出現在。文本字段允許您使用WP的條件標記或任何常規PHP代碼。

請注意您引入的小部件邏輯是直接EVAL。任何有權編輯小部件外觀的人都有權添加任何代碼,包括惡意和可能具有破壞性的功能。有一個可選的過濾器’widget_logic_eval_override’,您可以根據需要使用自己的代碼繞過EVAL。 (參見其他註釋)。

還可以選擇添加wordpress“widget_content”過濾器 – 這使您可以調整任何窗口小部件的HTML以適合您的主題,而無需編輯外掛Plugin和核心代碼。

捐款

如果您喜歡並使用Widget Logic,您可以考慮向英國癌症研究中心捐贈一筆捐款。我有一個 JustGiving.com捐款鏈接。截至2017年2月,我們已經籌集了1,048.50 UKP。

編寫邏輯代碼

“窗口小部件邏輯”字段中的文本可以是完整的PHP代碼,當您需要顯示窗口小部件時,應返回“true”。如果文本中沒有“返回”,則在開頭添加隱式“返回”,並在結尾添加“;”。 (這只是為了讓像is_home()這樣的單個語句更方便。)

基礎知識

充分利用 WP自己的條件標籤。您可以使用以下方法更改和組合代碼:

(NOT)至反轉邏輯,例如!is_home()當為非主頁時為TRUE。 || (OR)至組合條件。當X為真或Y為真時, X OR Y 為TRUE。 && (AND)使條件更具體。當X均為真且Y為真時, X和Y 為TRUE。 WP論壇上和網上的WP站點上有很多很棒的代碼示例。但WP Codex也充滿了適應的好例子,例如

測試帖子是否屬於後代類別

示例

is_home() - 只是主要博客頁面!is_page(’about’) - 除了這個特定的WP'頁面'之外的任何地方!is_user_logged_in() - 當用戶未登錄時顯示 is_category(array(5,9,10,11)) - 其中一個給定類別ID的類別頁面 is_single( )&& in_category(’baked-goods’) - 該帖子中的單個帖子 current_user_can(’level_10’) - 僅限admin strpos($ _ SERVER [‘HTTP_REFERER’], “google.com”)!= false - 點擊谷歌搜索時顯示的小部件 is_category()&& in_array($ cat,get_term_children(5,’category’)) - 類別頁面,它是類別5 全球$ post的後代; return(in_array(77,get_post_ancestors($ post))); - WP頁面是第77頁的孩子 global $ post; return(is_page(’home’)||($ post-> post_parent ==“13”)); - 主頁或第13頁的孩子的頁面注意在有明確“返回”的一端的額外“;”。

‘widget_logic_eval_override’過濾器

在為每個窗口小部件評估窗口小部件邏輯代碼之前,窗口小部件邏輯代碼的文本將通過此過濾器傳遞。如果過濾器返回BOOLEAN結果,而是用於確定窗口小部件是否可見。返回TRUE表示可見。

‘widget_content’過濾器

當此選項處於活動狀態時(勾選小部件管理頁面底部的選項複選框),您可以修改任何小部件顯示的文本,從您自己的主題功能.php文件。使用以下內容進入過濾器:

 add_filter('widget_content','your_filter_function',[priority],2);   

其中

[priority] add_filter 功能的可選優先級參數。過濾器函數可以採用第二個參數(如果你提供最後一個參數’2’),如下所示:

函數your_filter_function($ content ='',$ widget_id ='')  

如果需要,第二個參數($ widget_id)可用於定位特定小部件。

WordPress過濾器函數‘將未修改的數據作為輸入,並返回已修改的數據’,這意味著widget_content過濾器隨窗口小部件的原始HTML輸出一起提供,然後您將自由完全返回其他內容:

示例過濾器

 add_filter('widget_content','basic_widget_content_filter'); function basic_widget_content_filter($ content =''){return $ content。“< ; PRE>這齣現在每個WIDGET之後< / PRE>“;}   

我有動力製作這個過濾器,以便使用優秀的

ttftitles外掛Plugin來渲染所有小部件標題這個:

 add_filter('widget_content','ttftext_widget_title'); function ttftext_widget_title($ content =''){preg_match(“/< h2 [^>] *>([^ <] +)/“,$ content,$ matches); $標題= $匹配[1]; $ insert_img = the_ttftext($ heading,false); $含量= preg_replace函數(“/(小於H2 [^>] *>)[^<] + /”,“$ 1 $ insert_img”,$內容,1);return $ content;}   

人們經常會想辦法讓小部件交替使用樣式。此過濾器將widget_style_a / widget_style_b插入到通常位於小部件主要定義中的class =“widget …”文本中:

 add_filter('widget_content','make_alternating_widget_styles'); function make_alternating_widget_styles($ content =' '){global $ wl_make_alt_ws; $ wl_make_alt_ws =($ wl_make_alt_ws ==“style_a”)“style_b”?:“style_a”; return preg_replace('/(class =“widget)/',”$ 1 widget _ $ {wl_make_alt_ws}“,$ content);}   

屏幕截圖

標準窗口小部件中的“窗口小部件邏輯”字段。
外掛Plugin選項位於常用窗口小部件的底部管理頁面…
widget_content 過濾器, wp_reset_query 選項,'加載邏輯點'和'評估多次'。您還可以將站點的WL選項導出和導入為純文本文件快速備份/恢復並幫助解決問題。

安裝

上傳

widget-logic.php / wp-content / plugins / 目錄通過WordPress的“外掛Plugin”菜單激活外掛Plugin就是這樣。配置和選項都在通常的小部件管理界面中。配置

除了針對你的小部件的邏輯,還有三個選擇離子添加到小部件管理頁面的底部(參見屏幕截圖)。

添加’widget_content’過濾器 – 這允許您修改所有窗口小部件中的文本輸出。您需要知道如何編寫WP過濾器,但

其他註釋中介紹了一些基本知識。

使用’wp_reset_query’修復 – WP的許多功能,以及那裡的許多主題和外掛Plugin,可能會混亂條件標記,例如is_home是NOT在主頁上是真的。這通常可以在調用窗口小部件之前使用快速wp_reset_query()語句修復,並且此選項為您提供,而不必訴諸代碼編輯

加載邏輯 – 此選項允許您設置首次檢查時,您的窗口小部件邏輯的頁面加載點。在v.50之前,當’wp_head’觸發器發生時,即在創建HTML的HEAD塊期間。很多主題都沒有調用wp_head,這是一個問題。從v.50開始,默認情況下,它會盡可能早地發生,即外掛Plugin加載時。您現在可以指定這些’後期加載’點(按時間順序):

主題加載後(after_setup_theme觸發器)當所有PHP加載(wp_loaded觸發器)後查詢變量設置(parse_query) – 這是defaultduring頁眉( wp_head trigger)

如果你的邏輯依賴於定義的函數,你可能需要延遲加載,例如在theme functions.php文件中。相反,您可能需要提前加載,以便正確計算窗口小部件計數,例如,當側邊欄沒有窗口小部件時顯示替代的佈局或內容。

不緩存小部件邏輯結果 – 從v.58開始,小部件邏輯代碼應該只執行一次,但這可能會導致某些主題出現意外結果,因此此選項可以關閉此行為。 (每次調用sidebars_widgets過濾器時,都會評估代碼的真/假。

FAQ

安裝說明上載

widget-logic.php / wp- content / plugins / 目錄通過WordPress的“外掛Plugin”菜單激活外掛Plugin就是這樣。配置和選項都在通常的小部件管理界面中。配置

除了針對小部件的邏輯,還有有三個選項添加到小部件管理頁面的底部(參見屏幕截圖)。

添加’小工具_內容’過濾器 – 允許您修改所有小部件中的文本輸出。您需要知道如何編寫WP過濾器,但

其他註釋中介紹了一些基本知識。

使用’wp_reset_query’修復 – WP的許多功能,以及那裡的許多主題和外掛Plugin,可能會混亂條件標記,因此主頁上的is_home不正確。這通常可以在調用窗口小部件之前使用快速wp_reset_query()語句修復,並且此選項為您提供,而不必訴諸代碼編輯

加載邏輯 – 此選項允許您設置首次檢查時,您的窗口小部件邏輯的頁面加載點。在v.50之前,當’wp_head’觸發器發生時,即在創建HTML的HEAD塊期間。很多主題都沒有調用wp_head,這是一個問題。從v.50開始,默認情況下,它會盡可能早地發生,即外掛Plugin加載時。您現在可以指定這些’後期加載’點(按時間順序):

主題加載後(after_setup_theme觸發器)當所有PHP加載(wp_loaded觸發器)後查詢變量設置(parse_query) – 這是defaultduring頁眉( wp_head trigger)

如果你的邏輯依賴於定義的函數,你可能需要延遲加載,例如在theme functions.php文件中。相反,您可能需要提前加載,以便正確計算窗口小部件計數,例如,當側邊欄沒有窗口小部件時顯示替代的佈局或內容。

不緩存小部件邏輯結果 – 從v.58開始,小部件邏輯代碼應該只執行一次,但這可能會導致某些主題出現意外結果,因此此選項可以關閉此行為。 (每次調用sidebars_widgets過濾器時,都會評估代碼的真/假。

我升級到版本5.7.0,我的網站的小部件現在表現不同ly

對Widget Logic代碼的評估方式進行了重大更改。在查詢變量設置之後有一個新的默認“加載邏輯”點。對於大多數人來說,這應該會更好,但你可以嘗試恢復到“外掛Plugin啟動時”的舊默認值。

如果它不起作用,我可以嘗試什麼?切換到默認主題。如果問題消失,您的主題可能會干擾WP條件標記或小部件如何工作嘗試

wp_reset_query 選項。如果您的主題在調用動態側邊欄之前執行自定義查詢,這可能有所幫助。嘗試不同的“加載邏輯”點。大多數wordpress條件標籤僅在“查詢變量設置之後”工作,但是某些外掛Plugin可能需要更早或更晚地進行評估。如果必須使用早期的“加載邏輯”點,則可能需要“多次評估小組件邏輯”選項。我得到的錯誤就像“PHP Parse錯誤...... eval()'代碼在第1行”你的小部件的Widget Logic字段中有一個PHP語法錯誤。檢查它們是否有錯誤。您可能會發現最簡單的方法是使用“導出選項”並在那裡讀取代碼(雖然請注意,單引號和雙引號會使用多個反斜杠字符進行轉義。)

如果您在查找語法錯誤時遇到問題一個簡單的故障排除方法是使用“導出選項”來保留副本,然後依次清空每個Widget Logic字段,直到問題出現。一旦確定了有問題的代碼,就可以使用“導入選項”恢復其餘代碼。

這會導致Woo Commerce /其他流行外掛Plugin出現問題

通常,並非總是通過嘗試不同的“加載邏輯”選項來解決這個問題。 “查詢後變量集”選項看起來可能是更好的默認值,請嘗試一下。

W當沒有小部件時,帽子是我的側邊欄中的東西?

從v.50開始,小部件邏輯代碼運行,以便在主題代碼中調用dynamic_sidebar時,如果不存在小部件,它將“返回false”。在這種情況下,許多主題被編碼為放置一些默認的側邊欄文本來代替小部件,這就是你所看到的。

如果您希望此默認側邊欄內容消失,您的選項是編輯主題,或作為解決方法,在側邊欄的小部件末尾添加一個空文本小部件(無標題,無內容)名單。

如何在我的“主頁”頁面上獲取小部件X? (或在除此之外的每個頁面上。)

主頁面和首頁之間存在一些混淆。如果您想要“首頁”上的小部件,無論是靜態頁面還是一組帖子,請使用is_front_page()。如果是使用is_page(x)的頁面不起作用。如果您的“首頁”是一個頁面而不是一系列帖子,您仍然可以使用is_home()在主帖子頁面上獲取小部件(如管理員>設置>閱讀中所定義)。 邏輯使用is_page()不起作用

我相信這是在5.7.0中修復的。如果情況不是這樣,請告訴我。

如果您的主題在循環後調用側邊欄,您應該會發現wp_reset_query選項修復了一些問題。在

is_page codex頁面上解釋了此問題。 如何讓窗口小部件顯示在類別頁面和該類別中的單個帖子上?

小心使用條件標籤。有

in_category is_category 標記。一個用於判斷“當前”帖子是否屬於某個類別,另一個用於判斷該頁面是否顯示該類別的IS(標籤等相同)。你想要的是這樣的情況:

(這個頁面是IS類別X)或者(這是一個帖子和這個post是IN類X)  

,在適當的PHP中是:

 is_category(X)|| (is_single()&& in_category(X)) 如何在X,Y和Z時顯示小部件? 

先自己動手。查看

其他註釋下的“編寫邏輯代碼”部分。 為什麼Widget Logic如此不友好,你必須成為代碼惡魔才能使用它?

這是故意的。我最初寫它是為了盡可能靈活,想到在某些時候編寫一個拖放UI。我從來沒有接受它,因為(我很懶惰)我無法使它看起來很漂亮,讓你回到’純粹的代碼’(為了在UI中更難以滿足的可能性)。

外掛Plugin

小部件上下文提供了一個不錯的用戶界面,並且具有整潔的“URL匹配”功能。 小部件不應出現

可能是您的主題在調用側邊欄之前執行自定義查詢。嘗試

wp_reset_query 選項。

或者,您可能沒有足夠嚴格地定義邏輯。例如,當正在處理邊欄時,如果存檔頁面上的最後一個帖子位於“cheese”類別中,則in_category(’cheese’)將為true。

使用PHP的邏輯AND’&&來收緊您的定義,例如:

 is_single()&& in_category('cheese')  

評論

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

shares