Intereting Posts
Поле выбора сохраняет, но не обновляет значение в admin Фоновый образ не отображается? Убедитесь, что в массиве сообщений есть сообщения из определенной категории Альтернативный пользовательский контент в цикле Каков наилучший способ хранения пользовательских переменных Пользовательский адрес меню пуст Как создать динамически обновляемое заявление об авторских правах? Добавить новый столбец на страницу сайта Шаблон регистрации Сортировка терминов индивидуально для каждого сообщения Изменить каталог по умолчанию для медиа-загрузчика API REST: как я могу ограничить тип настраиваемого сообщения только доступным для аутентифицированных пользователей? Связать сообщения вместе (относительные, не сгруппированные) Переопределить edit_custom_walker.php для условного отображения ввода в зависимости от позиции меню Как добавить имя пользователя в ссылку панели инструментов?

Используются ли функции короткого кода при рендеринге контента, или они выполняются и сохраняются с содержимым сообщения?

Я не уверен, правильно ли задал вопрос, извинился за это! То, что я пытаюсь сделать, – вывести <!--nextpage--> через <!--nextpage--> . Но это не работает, я думаю, потому что короткие коды применяются, когда контент отображается, тогда как <!--nextpage--> предварительно разрешается в ссылки. Кто-нибудь знает, можно ли это сделать? Могу ли я применить <!--nextpage--> через мой shortcode, когда сообщение отображается?

Я не знаю, какие фильтры точного порядка применяются к the_content(); и будет ли это достаточно рано, но если это не сработает для вас, я считаю, что можно с уверенностью предположить, что вы правы, думая, что короткий код применяется в последнее время.

Из /wp-includes/shortcodes.php (строка 296, wp 3.2.1) видно, что короткие коды естественно разрешаются так:

 add_filter('the_content', 'do_shortcode', 11); // AFTER wpautop() 

do_shortcode вместо этого, когда выполняется the_posts убедитесь, что они выполняются достаточно рано. the_posts запускается сразу после получения записей из базы данных. Следующее должно работать:

 add_filter('the_posts', 'rutwick_shortcode_exec'); function rutwick_shortcode_exec($posts) { $post_count = count($posts); for ($i = 0; $i < $post_count; ++$i) { do_shortcode($posts[$i]->post_content); } return $posts; } 

Возможно, достаточно снизить приоритет:

 add_filter('the_content', 'do_shortcode', 9); 

Отметим, что я не тестировал выше, и я ничего не гарантирую. Кроме того, вы можете столкнуться с конфликтами с wpautop , потому что, если это применяется, короткие коды (все короткие коды!) Теперь разрешены, прежде чем фильтровать контент.

РЕДАКТИРОВАТЬ: Возможно, было бы безопаснее запустить свою собственную функцию замены раньше (следующее будет предполагать, что ваш короткий код называется [next]):

 function do_rutwick_shortcode($content) { $content = preg_replace('{\[next\]}','<!--nextpage-->',$content); return $content; } 

и вызовите это, используя один из двух вышеперечисленных методов (например, подключив его к the_content с меньшим номером приоритета или заменив do_shortcode(...) с помощью do_rutwick_shortcode(...) в приведенном выше for цикла). Если вы решите это сделать, использование add_shortcode становится излишним. Кроме того, если вы захотите подключиться к the_posts preg_replace может быть запущен непосредственно в указанной функции, два не нужны, то есть:

 $posts[$i]->post_content = preg_replace('{\[next\]}','<!--nextpage-->',$posts[$i]->post_content); 

сэкономит вам вызов функции.