2011-05-04 85 views
1

我在wordpress中有一個基於twentyten的兒童主題。在wordpress中添加過濾器到兒童主題

我的一些作者在他們的帖子標題中對網址進行了硬編碼,我想刪除這些網址。

我把下面的代碼在我functions.php文件中的子主題,但它有文章標題的顯示不影響:

add_filter(‘the_title’, ‘ib_strip_tags_from_titles’); 
function ib_strip_tags_from_titles($title) { 
    $title = strip_tags($title); 
    return $title; 
} 

有什麼建議?

+0

我試着在專題子主題中的代碼,並在函數內執行了一個die語句,它工作。你還有問題嗎? – awats 2011-05-05 23:24:54

+0

問題的一部分是strip_tags沒有做我認爲它做的事。如果我在我的子主題中包含關閉?>標記而不包含結束標記,那麼也會出現差異。必須進一步調查。 – user515663 2011-05-20 14:08:17

回答

0

strip_tags()僅刪除HTML標籤 - 在你的情況下,它會改變從

Some Text <a href="http://someurl.com">LINK</a> Other Text

Some Text LINK Other Text

如果我理解正確的稱號,這是你想要什麼:

function ib_remove_links_from_titles($title) { 
    $title = preg_replace('/<a([^<]*)">([^<]*)<\/a>/', '', $title); 
    return $title; 
} 
add_filter('the_title', 'ib_remove_links_from_titles'); 

用上面的例子會輸出Some Text Other Text

注意,因爲你試圖用strip_tags()來完成任務,我假設了「harcoded網址」,因爲你描述的他們,被封閉在<a [...] ></a>標籤。如果不是這種情況,您需要一個與URL匹配的正則表達式。這是非常棘手的,取決於你的作者使用的URL是否國際化/有不同的域名,不僅僅是http:// prefaced等等。

我擔保上面的工作,如果他們被封閉在標籤,如果沒有,這個表達式將趕上最網址,但說到沒有我保證在任何情況下工作:

(([A-Za-z]{3,9})://)?([-;:&=\+\$,\w][email protected]{1})?(([-A-Za-z0-9]+\.)+[A-Za-z]{2,3})(:\d+)?((/[-\+~%/\.\w]+)?/?([&?][-\+=&;%@\.\w]+)?(#[\w]+)?)?

你」 d已經將上述函數中的'/和/'放在了。