簡體   English   中英

WordPress中的覆蓋功能(帶鈎子)

[英]Override function (with hook) in wordpress

我有這種情況:

父主題:

functions.php

require_once(dirname(__FILE__) . "/includes/theme-functions.php");
require_once(dirname(__FILE__) . "/includes/theme-hooks.php"); 

theme-function.php

function name_of_this_function() {
    // DO SOMETHING
}
add_action ('hook','name_of_this_function');

theme-hooks.php

function hook() {
    do_action('hook');
}

給定我的名字之前,我該如何在我的孩子的functions.php中覆蓋該動作? 我試過了:

remove_action ('hook','name_of_this_function');

但是當然,這返回false

經過多次嘗試(非常失敗)並在線閱讀了大量文檔后,我得到了答案。

解決方案位於“ after_setup_theme”掛鈎中。

在將動作添加到父項的“頂部”之前,這意味着我有兩個頁眉,兩個頁腳,依此類推。 當然,問題在於我的functions.php無法刪除尚未添加的內容。

這是由在父主題之一之前運行子項的functions.php的wordpress行為引起的。

解決此問題的方法是在設置主題之后添加功能,該功能具有優先級,以強制其在父項之一之后運行。 這樣,將初始化父級的所有函數(將父級的后設置稱為最后一個函數),並且我將能夠刪除某些操作。 這是語法:

add_action('after_setup_theme', 'my_setup', 3);
function my_setup(){
    /* CUSTOM FOOTER */
    remove_action('footer_hook','parent_site_info',99);
    add_action('footer_hook','site_info',99);
}

那解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM