Речь про шорткоды с содержимым в несколько строчек? По идее да, будет разница. Потому что все, что выводится через the_content() проходит через wpautop() и она ломает верстку, если есть шорткод и внутри несколько абзацев текста (получаются незакрытые теги). В случае прямого использования do_shortcode() функция для разбивки на абзацы не используется.
Потому что все, что выводится через the_content() проходит через wpautop() и она ломает верстку, если есть шорткод и внутри несколько абзацев текста (получаются незакрытые теги). В случае прямого использования do_shortcode() функция для разбивки на абзацы не используется.
Ага, спс. значит the_content
вносит своё..
А что еще он «тянет», кроме wpautop
? Судя по описанной проблеме с плагином — там ещё и наверное с аяксом что-то (с ним я совсем плохо дружу).
Там много всего. Списка составленного нет похоже, поэтому если просто быстро пробежаться по исходникам видно вот такое:
add_filter( 'the_content', 'wptexturize' );
add_filter( 'the_content', 'convert_smilies' );
add_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'shortcode_unautop' );
add_filter( 'the_content', 'prepend_attachment' );
add_filter( 'the_content', 'wp_make_content_images_responsive' );
add_filter( 'the_content', 'do_shortcode', 11 ); // AFTER wpautop()
add_filter( 'the_content', array( $this, 'run_shortcode' ), 8 );
add_filter( 'the_content', array( $this, 'autoembed' ), 8 );
// Format WordPress
foreach ( array( 'the_content', 'the_title', 'wp_title' ) as $filter )
add_filter( $filter, 'capital_P_dangit', 11 );
Там много всего.
Нда..
Значит, что бы заставить работать шоркод через do_shortcode так же, как он работает при вставке в контент нужно применить все эти фильтры. (Ну мб не все, но надо смотреть какие).
Но я не пойму как это сделать.
По идее они ж и так применяются, что подтверждает ошибка
Error in user-provided code item named "filters-the_content".
(выдаёт этот полезный плагин).
Так как же их «натравить» на do_shortcode?
И ещё есть проблема с аяксом. Ошибка указывает на плагин («производитель» шоркода), но её ж нет, если вставлять шоркод в контент
Значит теряется и что-то от аякса. Что/где/как решить?
Ну или собственно главный вопрос — как заставить работать do_shortcode так же, как и при обработке шорткода в контенте?
Так как же их «натравить» на do_shortcode?
apply_filters( ‘the_content’, ‘[best_shortcode]’ );
-
Ответ изменён 8 лет, 1 месяц назад пользователем
iTRON.