2011-12-17 136 views
3

是否有可能在執行the_content()之前從內容中刪除圖庫短代碼?我搜查了codex,發現remove_shortcode($tag),但它們沒有顯示任何示例。Wordpress從內容中刪除短代碼

我嘗試添加到功能

function remove_gallery($content) { 
    $content .= remove_shortcode('[gallery]'); 
    return $content; 
} 
add_filter('the_content', 'remove_gallery', 6); 

它不工作..

更新:

我可以使用下面的代碼來註銷短代碼,但它也消除了content

function remove_gallery($content) { 
    return remove_shortcode('gallery', $content); 
} 
add_filter('the_content', 'remove_gallery', 6); 

回答

5

奇怪。 remove_shortcode(codex link)不需要第二個參數。

您正在返回remove_shortcode函數的true或false返回值,而不是移除shortcode的內容。

嘗試要麼像這樣在你的函數是第二個版本在那裏:

remove_shortcode('gallery'); 
return $content; 

或者只是把

remove_shortcode('gallery'); 

在你的functions.php文件。以前的海報建議包括[]的,我猜是錯誤的。

+0

謝謝!我沒有返回內容。如果你可以指定要刪除的短代碼,'strip_shortcodes()'是最理想的。 – CyberJunkie 2011-12-18 05:51:00

2

I認爲你應該使用這樣的子字符串替換:

function remove_gallery($content) { 
    return str_replace('[gallery]', '', $content); 
} 
add_filter('the_content', 'remove_gallery', 6); 

請記住,這種方法不具備良好的性能。

更新:您可以通過添加代碼註銷在function.php的shotcode:

remove_shortcode('[gallery]'); 
+0

謝謝!不幸的是,'str_replace'方法不能註冊簡碼。 – CyberJunkie 2011-12-17 22:25:54

+0

我能夠使用過濾器取消註冊問題。請參閱上面的更新 – CyberJunkie 2011-12-17 22:29:24

+0

我認爲你所做的是不正確的。要刪除短代碼,只需在function.php中添加以下代碼:remove_shortcode('[gallery]'); – bingjie2680 2011-12-18 09:58:13

6

我知道這是一個相對老的問題,但strip_shortcodes函數確實有效!如果你問我

global $post; 
echo strip_shortcodes($post->post_content); 

最簡單的方法..

+0

但請記住'strip_shortcodes()'將刪除*所有*簡碼,而不僅僅是'gallery'簡碼。這個問題只涉及'畫廊'的簡碼。 – Werner 2016-10-16 04:54:19

2

一個老問題,但經過一番挖掘和答案,這爲我工作的組合:

<?php $content = get_the_content(); 

echo strip_shortcodes($content);?> 

我只是插入畫廊,我想要分開移除和顯示。顯然,如果你想刪除特定的簡碼,這可能不是你的解決方案。