ЗАПИТАННЯ ТА ВІДПОВІДЬ ПЕРЕГЛЯД
Іноді виникають ці запитання, які вас нудять і знову виштовхують, і це одне таке питання.
Це питання змусило мене подумати про альтернативне рішення проблеми. Як я вже зазначав, спеціальні поля та метаполя є там, щоб зберігати невеликі фрагменти метаданих, а не діяти як розширення для розміщення вмісту, де ви можете виконувати короткий код та функції. Також, як я вже заявив, ваш метод неправильний і його не слід використовувати
Те, що мені було цікавим у вашій публікації, - це те, що ви використовували власні поля та метаполя для ненавмисного відображення користувальницького вмісту із введення користувачем. Тож я сидів і думав про можливий спосіб зробити цю роботу і правильно використовувати користувальницькі дані поля та дані мета-поля
Це моя ідея:
СЦЕНАРІЯ:
ПРИМІТКА. Це можна змінити відповідно до будь-яких потреб
Під час однієї публікації користувач хоче / вимагає динамічно показувати користувацький вміст після публікації відповідно до його потреб. Це має бути динамічним. Вміст має бути спеціальним запитом, і користувачеві потрібно вибрати, що показувати, коли він хоче, і що він хоче
МОЖЛИВО РЕШЕННЯ:
Короткі коди тут не працюватимуть, оскільки не можна виконати шрифти в спеціальних полях. Не будеdo_shortcode
працювати, як це не динамічно і жорстко кодується, чогось ми не хочемо. Як і у вашому питанні, ми збираємось скористатись спеціальними полями. Ще раз наголошую, не використовуйте користувальницьке поле для виконання користувацького запиту чи шорт-кодів
ПЛАН:
Ми будемо використовувати поле користувача, щоб зберегти лише наші аргументи запитів, тобто все. Отже, те, що ми робимо, ми створюємо власне поле під назвою custom_query_arguments
. На екрані редактора публікацій ви побачите власне поле, готове до використання
Наступним кроком буде додавання до нашого поля аргументів власного запиту. Скажімо, нам потрібно показати 3 повідомлення з категорії 1, відсортовані за назвою. Отже наші аргументи запиту повинні виглядати так: ( у рядковому форматі )
'posts_per_page=3&cat=1&orderby=title'
Це те, що вам слід зараз ввести у вашому користувальницькому полі. Після введення збережіть значення спеціального поля
Далі буде побудова користувацького запиту у вашому single.php. Що потрібно тут, нам потрібно отримати значення з нашого користувальницького поля, яке насправді є нашими аргументами запитів, і подати його до нового екземпляра WP_Query
для отримання публікацій. Нам також потрібно перевірити, чи є насправді збережене значення у цьому користувальницькому полі, якщо користувацьке поле порожнє, нічого не показувати
КОДЕКС:
Ви можете спробувати щось подібне в single.php відразу після одного повідомлення.
$args = get_post_meta( get_queried_object_id(), 'custom_query_arguments', true );
// check if the custom field has a value
if( ! empty( $args ) ) {
$q = new WP_Query( $args );
if( $q->have_posts() ) {
while( $q->have_posts() ) {
$q->the_post();
the_title();
}
wp_reset_postdata();
}
}
Якщо користувач хоче видалити спеціальний запит, він може просто видалити значення спеціального поля та залишити поле користувача порожнім. Якщо йому потрібно показати той самий запит, але з категорії 10 та загалом 5 повідомлень, він може просто замінити початкове значення на наступне
'posts_per_page=5&cat=10&orderby=title'
НЕЧАСКІ ПРИМІТКИ:
Важливо використовувати правильний синтаксис та формат під час введення інформації у ці спеціальні поля та метаполя. Помилки синтаксису або неправильна інформація призведе до небажаного виводу або навіть фатальних помилок. Важливо повідомити клієнтам про таку інформацію
ОРИГІНАЛЬНИЙ ВІДПОВІДЬ
Я не розумію, що ви намагаєтеся зробити, але, з того, що я можу вам сказати, це дві окремі речі
ВАРІАНТ 1
apply_filters('the_content', $content);
використовується для застосування фільтрів контенту до неочищеного нефільтрованого вмісту публікацій, який зазвичай походить від використання $post->post_content
. Ці фільтри включають відомий фільтр, wp_autop
який додає теги pthe_content()
apply_filters('the_content', $content);
зазвичай використовується в поєднанні з тим, get_posts
де людина працює безпосередньо з WP_Post
об'єктами, не використовуючи те, setup_postdata( $post )
що робить теги шаблонів подібнимиthe_content()
доступними для використання
ВАРІАНТ 2
do_shortcode
використовується для додавання короткого коду в будь-який файл файлів шаблонів поза текстовим редактором на задньому кінці екрана редактора сторінки, в основному фільтруючи шорткоди за допомогою їх гачків.
Правильне використання полягає в наступному
Приклад: Додавання короткого коду галереї у файл шаблону
echo do_shortcode( '[gallery]' )
ЗРІД 1
З ваших коментарів я тоді взагалі не використовував би короткий код.
Якщо ви не збираєтеся додавати короткий код через текстовий редактор і збираєтесь додавати його безпосередньо (жорсткий код) через do_shortcode
у файл шаблону, я б швидше просто додав функцію до шаблону
Приклад:
Якщо у вас є така функція короткого коду
function footag_func( $atts ) {
return "foo = {$atts['foo']}";
}
add_shortcode( 'footag', 'footag_func' );
Ви можете просто викликати функцію безпосередньо в шаблоні типу
echo footag_func();
Це набагато швидше, оскільки короткий код не потрібно розбирати
EDIT 2
Якщо чесно, то ви цілком робите це неправильно зі своєї редакції. Ось чому я не міг зрозуміти ваше початкове запитання
Іноді мені потрібно додати мета публікації на посаду / сторінки / типи публікацій, щоб вони могли додавати шорт-коди (слайдер, контактну форму тощо) або просто простий текст. Це поданий текст.
Щоб короткий код працював, я використовую варіант 1 .....
Спеціальні поля - ні текстовими полями і, безумовно, не призначені для використання для виконання коротких кодів, а також для повзунків або контактних форм. Спеціальні поля ніколи не повинні використовуватися для заміни текстового редактора в публікаціях та на сторінках.
Як я вже говорив, apply_filters('the_content', $content);
призначений для використання у форматуванні до сировинного вмісту публікації.
Тут у вас є два варіанти
Використовуйте do_shortcode
безпосередньо у файлах шаблонів, що я б не рекомендував, оскільки використання функції швидше, оскільки короткий код не потрібно розбирати
Використовуйте короткий код безпосередньо в текстовому редакторі для певної сторінки / публікації
Я б серйозно рекомендував по-новому поглянути на свої структури і те, що ви хочете досягти. Спеціальні поля - ні текстовими редакторами і не можуть виконувати шорт-коди або повзунки.
Моя рекомендація - переглядати, можливо, спеціальні віджети або систему, яку ви можете використовувати зі спеціальними полями