Intereting Posts
Пользовательская страница с переменными в url. Хороший URL-адрес с add_rewrite_rule Включить изображение в auto the_excerpt? Изменить запрос на внешний интерфейс для пользовательских типов сообщений Как остановить прямой HTTP POST для PHP-скрипта? страница категории для настраиваемого типа сообщения Как я могу обслуживать разные изображения в зависимости от размера экрана с помощью wordpress уникальный идентификатор для тех же страниц в многоязычном контексте Должны ли функции активации / деактивации в классе быть статическими? Настроить положение виджетов alt прикрепленного изображения в сообщении / страницах Как применить стили css WordPress к диалогу jQueryUi? Поиск с помощью апострофа измените $ content_width Пользовательский навигатор Nav Walker отображает текущие пункты меню детей или братьев и сестер без детей Создать дочернюю страницу в настраиваемом типе сообщений

Использование короткого кода в коротком коде с динамической переменной

Поэтому я написал короткий код для создания Loop (который показывает самые последние сообщения), shortcode – это просто [loop] . Вот код, который выводит содержимое каждого сообщения (это бит, вызывающий у меня проблемы):

 $output .= "<p class='entry-content'>" . get_the_content() . "</p></div>"; 

Поэтому я пишу сообщения, а короткий код берет их и показывает их на главной странице, а где-нибудь еще я указываю короткий код. Я использую это на довольно многих сайтах и ​​никогда не испытывал никаких проблем.

В текущем проекте клиент хочет разместить Vines на главной странице. Я написал еще один короткий код для вставки Vines в сообщение:

 function render_vine_embeds($atts) { extract(shortcode_atts(array( "id" => '', "type" => 'simple', "dimension" => 600 ), $atts)); $vine_id = $id; $vine_type = $type; $vine_dimension = $dimension; return '<iframe class="vine-embed" src="https://vine.co/v/'. $vine_id .'/embed/'. $vine_type .'" width="'. $vine_dimension .'" height="'. $vine_dimension .'" frameborder="0"></iframe> <script async src="//platform.vine.co/static/scripts/embed.js" charset="utf-8"></script>'; } add_shortcode("vine", "render_vine_embeds"); 

Поэтому короткий код выглядит так: [vine id="{{ id here }}"] , атрибуты Type и Dimension являются необязательными. Это нормально, когда я нахожусь на определенном посту, но когда он находится на главной странице, а Loop генерируется по короткому коду, короткий код Vine не работает, а исходный shortcode отображается как контент.

Я попытался использовать do_shortcode([vine]) вместо the_content() , и это сработало, но id часть the_content() не так, чтобы страница Vine отображала страницу «Not Found» вместо самой Vine.

Итак, в конце концов, мой последний вопрос заключается в том, как использовать короткий код внутри короткого кода с переменной?

Вам необходимо применить do_shortcode к самому содержимому. Пример:

  function test_func( $atts, $content ) { extract( shortcode_atts( array( 'foo' => 'no foo', 'baz' => 'default baz' ), $atts ) ); return "<div class='test'>".do_shortcode($content)."</div>'; } add_shortcode( 'test', 'test_func' ); 

Другими словами, вам нужно позаботиться о коротком коде, который печатает сообщения, а не о лозе.