WordPress раздельный шорткод из постов - PullRequest
5 голосов
/ 25 февраля 2012

Я хочу удалить только шорткоды [gallery] в своих сообщениях в блоге. Единственное решение, которое я нашел, - это фильтр, который я добавил к своим функциям.

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

Удаляет все шорткоды, включая [caption], которые мне нужны для изображений. Как я могу указать один шорткод для исключения или включения?

Ответы [ 2 ]

13 голосов
/ 25 февраля 2012

Чтобы удалить только короткий код галереи, зарегистрируйте функцию обратного вызова, которая возвращает пустую строку:

add_shortcode('gallery', '__return_false');

Но это будет работать только с обратными вызовами. Чтобы сделать это статически, вы можете временно изменить глобальное состояние WordPress, чтобы обмануть его:

/**
 * @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;
}

Использование:

$content = strip_shortcode('gallery', $content);
0 голосов
/ 10 января 2013

Если вы хотите получить только контент, исключая любые шорткоды, попробуйте что-то подобное

global $post;
$postContentStr = apply_filters('the_content', strip_shortcodes($post->post_content));
echo $postContentStr;
...