2015-06-07 14 views
7

Tôi có một trang Wordpress và tôi muốn xóa các trích dẫn khối khỏi bài đăng và chỉ đặt văn bản thông thường. (cũng muốn xóa bất kỳ hình ảnh nào có trong văn bản, tôi chỉ muốn văn bản thông thường)xóa trích dẫn khối từ bài đăng - Wordpress

Mã này thực hiện OPPOSITE về những gì tôi muốn - đưa ra các dấu ngoặc kép và đăng bài đó. Tôi muốn nó để gửi các văn bản khác và không phải là báo giá khối.

<?php 
     // get the content 
     $block = get_the_content(); 

     // check and retrieve blockquote 
     if(preg_match('~<blockquote>([\s\S]+?)</blockquote>~', $block, $matches)) 

     // output blockquote 
     echo $matches[1]; 
?> 

Trả lời

1

Điều bạn cần là bộ lọc nội dung. Thêm nội dung sau vào tệp functions.php của bạn

add_filter('the_content', 'rm_quotes_and_images'); 
function rm_quotes_and_images($content) 
{ 
    $content = preg_replace("~<blockquote>([\s\S]+?)</blockquote>~", "", $content); 
    $content = preg_replace("/<img[^>]+>/i", "", $content);   
    return $content; 
} 
+0

Tôi đã nhận được rất nhiều ý kiến ​​nói rằng việc sử dụng preg_replace là thực hành không tốt và không tối ưu là – user3550879

+0

Điều đó phụ thuộc vào định nghĩa của bạn về "tối ưu". Nếu bạn muốn loại bỏ dấu ngoặc kép và hình ảnh vĩnh viễn, bạn nên chạy một truy vấn cơ sở dữ liệu một lần để loại bỏ chúng. Nhưng nếu bạn muốn có một bộ lọc để loại bỏ chúng khi xuất ra trang thì giải pháp preg_replace tôi đã đăng ở trên là cách thanh lịch để đạt được điều đó. – Nadav

0

Hãy thử điều này

add_filter('the_content', 'block_the_content_filter'); 
function block_the_content_filter($content) { 

$content = preg_replace("~<blockquote>([\s\S]+?)</blockquote>~", "", $content); 

return $content; 

} 
+0

không trả lại gì? – user3550879

0

Chỉ cần thêm video này vào mã của bạn:

$content = preg_replace("~<blockquote>([\s\S]+?)</blockquote>~", "", $content); 
$content = strip_tags($content, '<img>'); 

echo $content; 

Cách Wali hassan Sayed là thêm mã để function.php của bạn như sau:

 add_filter('the_content', 'block_the_content_filter'); 
    function block_the_content_filter($content) { 

    $content = preg_replace("~<blockquote>([\s\S]+?)</blockquote>~", "", $content); 
$content = strip_tags($content, '<img>'); 

    return $content; 

    } 

Điều này ghi đè mặc định "the_conte nt() "có chức năng như vậy trong mẫu trang bạn chỉ cần gọi:

the_content(); 
Các vấn đề liên quan