2013-08-15 5 views
1

В основном нужно удалить галерею шорткод из содержания Wordpress, я используюWordpress Галерея Shortcode Pregreplace

echo preg_replace('/\[gallery ids=[^\]]+\]/', '', get_the_content()); 

Это удаление галереи шорткод успешно, но и теги параграфов, которые мне нужно сохранить. Идея состоит в том, что я хочу выводить все содержимое, кроме галереи.

ответ

3

Вы можете использовать Wordpress strip_shortcode function.

Посмотрите на пример в Кодексе. Вы можете создать фильтр, который лишает шорткоды:

function remove_shortcode_from($content) { 
    $content = strip_shortcodes($content); 
    return $content; 
} 

и называем его, когда вам нужно (в шаблоне):

add_filter('the_content', 'remove_shortcode_from'); 
the_content(); 
remove_filter('the_content', 'remove_shortcode_from') 

EDIT 1

Другой способ получить, что (и отвечая на ваш комментарий), вы можете использовать Wordpress apply_filters function в содержании после удаления нежелательных коротких кодов.

//within loop 
$content = get_the_content(); 
$content = preg_replace('/\[gallery ids=[^\]]+\]/', '', $content); 
$content = apply_filters('the_content', $content); 
echo $content; 

Но я бы не рекомендовал вам это делать. Я думаю, что заставить ваш сайт изменить содержание сообщения может затруднить понимание. Возможно, вы должны работать с Wordpress Excerpt и избегать любых проблем.

A link that helped me

+0

Это хорошее решение и хорошо работает для достижения того, чего я пытаюсь достичь, но удаление всех коротких кодов может стать проблематичным с более сложной темой. – user2677732

0

удалить шорткод или конкретный список шорткода вы можете использовать этот код.

global $remove_shortcode; 
/** 
* Strips and Removes shortcode if exists 
* @global int $remove_shortcode 
* @param type $shortcodes comma seprated string, array of shortcodes 
* @return content || excerpt 
*/ 
function dot1_strip_shortcode($shortcodes){ 
    global $remove_shortcode; 
    if(empty($shortcodes)) return; 

    if(!is_array($shortcodes)){ 
    $shortcodes = explode(',', $shortcodes); 
    } 
    foreach($shortcodes as $shortcode){ 
    $shortcode = trim($shortcode); 
    if(shortcode_exists($shortcode)){ 
     remove_shortcode($shortcode); 
    } 
    $remove_shortcode[$shortcode] = 1; 
    } 
    add_filter('the_excerpt', 'strip_shortcode'); 
    add_filter('the_content', 'strip_shortcode');  
} 
function strip_shortcode($content) { 
    global $shortcode_tags, $remove_shortcode; 

    $stack = $shortcode_tags; 
    $shortcode_tags = $remove_shortcode; 
    $content = strip_shortcodes($content); 

    $shortcode_tags = $stack; 
    return $content; 
} 
dot1_strip_shortcode('gallery'); 

Принимает одиночную, запятую строку короткого кода или массив коротких кодов.

Смежные вопросы