2012-02-25 30 views
5

Tôi muốn xóa chỉ các mã ngắn [gallery] trong các bài đăng trên blog của mình. Giải pháp duy nhất tôi tìm thấy là một bộ lọc mà tôi đã thêm vào các chức năng của mình.Wordpress strip shortcode duy nhất từ ​​các bài viết

function remove_gallery($content) { 
    if (is_single()) { 
    $content = strip_shortcodes($content); 
    } 
    return $content; 
} 
add_filter('the_content', 'remove_gallery'); 

Nó loại bỏ tất cả các mã ngắn bao gồm [caption] mà tôi cần cho hình ảnh. Làm cách nào tôi có thể chỉ định một mã ngắn để loại trừ hoặc bao gồm?

+0

Bạn có thể cung cấp ví dụ về shortcode hoặc hai không? –

Trả lời

13

Để loại bỏ chỉ shortcode bộ sưu tập, đăng ký một hàm callback mà trả về một chuỗi rỗng:

add_shortcode('gallery', '__return_false'); 

Nhưng điều này sẽ chỉ làm việc với callbacks. Để làm điều đó tĩnh, bạn có thể tạm thời thay đổi trạng thái toàn cầu của wordpress để đánh lừa nó:

/** 
* @param string $code name of the shortcode 
* @param string $content 
* @return string content with shortcode striped 
*/ 
function strip_shortcode($code, $content) 
{ 
    global $shortcode_tags; 

    $stack = $shortcode_tags; 
    $shortcode_tags = array($code => 1); 

    $content = strip_shortcodes($content); 

    $shortcode_tags = $stack; 
    return $content; 
} 

Cách sử dụng:

$content = strip_shortcode('gallery', $content); 
+1

Đẹp nhất nhưng bạn cần trả lại mã ngắn khác, đừng quên echo do_shortcode ($ nội dung) sau đó. – Benn

-1

Nếu bạn muốn nhận được chỉ nội dung, không bao gồm bất kỳ shortcodes, hãy thử một cái gì đó như rằng

global $post; 
$postContentStr = apply_filters('the_content', strip_shortcodes($post->post_content)); 
echo $postContentStr; 
Các vấn đề liên quan