Wordpress шорткод не работает - PullRequest
4 голосов
/ 27 января 2011

Я создал очень уникальную и интенсивную JavaScript-тему для WordPress, и теперь шорткоды не работают.У меня не установлены плагины, так что это не так.Что я пропустил из файлов шаблонов WordPress, которые необходимы для использования коротких кодов (например: [gallery]).

Я понимаю, как создавать шорткоды, но как WP принимает ваш пост и заменяет "[gallery]"когда он выплевывает его обратно на дисплей?

РЕДАКТИРОВАТЬ: вот с чем я сейчас работаю:

    $pagepull = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'page' AND post_status = 'publish' ORDER BY menu_order", ARRAY_A);
    $i = 1;
    foreach ($pagepull as $single_page){
     echo "<div class=\"section\"><ul><li class=\"sub\" id=\"" . $i  . "\"><div class=\"insection\">";
         echo $single_page['post_content'];
$i++;
// more code that is irrelevant...
// more code that is irrelevant...
// more code that is irrelevant...
    }

Ответы [ 5 ]

11 голосов
/ 27 января 2011

Хорошо, попробуйте это

 $pagepull = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'page' AND post_status = 'publish' ORDER BY menu_order", ARRAY_A);
    $i = 1;
    foreach ($pagepull as $single_page){
     echo "<div class=\"section\"><ul><li class=\"sub\" id=\"" . $i  . "\"><div class=\"insection\">";
         echo apply_filters('the_content',$single_page['post_content']);
$i++;

Wordpress возьмет ваш контент и примените к нему фильтры.Вы должны зарегистрировать фильтр и разрешить анализировать ваш контент.

Если ваша тема не отображает ваши шорткоды, вероятно, вы выводите содержимое сообщения, не позволяя Wordpress фильтровать его.

Вызов функции get_the_content() для сообщения, не запускает фильтр для коротких кодов (если есть).

Чтобы применить

<?php apply_filters('the_content',get_the_content( $more_link_text, $stripteaser, $more_file )) ?>

Ссылка: http://codex.wordpress.org/Function_Reference/get_the_content

Примечание: многиеплагины регистрируют фильтры с контентом для реализации шорткодов!

1 голос
/ 01 октября 2013

У меня была такая же проблема.

Короткие коды зависят от WP Loop, но это другая проблема. Короче говоря, я добавил the_post(); на странице, которая должна показывать шорткод (например, articles.php).

Кроме того, убедитесь, что вы используете the_content() для отображения текста (например, $post->post_data не будет показывать вам шорткоды).

1 голос
/ 25 января 2013

используйте это, если вы хотите содержимое внутри переменной:

ob_start();
the_content();
$content = ob_get_clean();

теперь вы можете просто сделать echo $ content;или используйте регулярные выражения или все, что вы хотите, чтобы содержимое выглядело так, как вы хотите.

0 голосов
/ 06 сентября 2013

Пожалуйста, используйте

ob_start();

при запуске функции и использовать

return ob_get_clean();

перед закрытием функции.

Надеюсь, это поможет вам полностью.

Приветствия

0 голосов
/ 04 июня 2012

Мое решение заменяло

<?= get_the_content() ?>

на

<?= the_content() ?>

, которое, как уже упоминалось в keatch, применяет фильтры перед возвратом содержимого.

Читать этовнимательно о содержании

...