#php #wordpress
#php #wordpress
Вопрос:
У меня есть пост, в котором пользователь может изменять все тексты сайта в пользовательских полях, созданных с помощью плагина ACF. Дело в том, что я не хочу, чтобы этот пост вообще отображался ни на одной странице. Я попытался изменить его статус на закрытый, но из-за этого все тексты из пользовательских полей исчезают с веб-сайта. Как я могу отфильтровать только этот конкретный пост из всех списков сообщений? Есть ли какой-нибудь способ отфильтровать его в functions.php ?
РЕДАКТИРОВАТЬ: я использую версию PRO, на случай, если кому-то это интересно.
Ответ №1:
Почему вы хотите сохранить его all site texts in custom fields
в посте? Вы могли бы лучше зарегистрировать страницу параметров и сохранить там все детали. Тогда вам не нужно скрывать никаких постов.
Зарегистрируйте страницу параметров acf:
<?php
// Add main options page
acf_add_options_page( array(
'page_title' => __( 'Options', 'textdomain' ),
'menu_title' => __( 'Options', 'textdomain' ),
'menu_slug' => 'theme-options',
'capability' => 'manage_options',
'position' => 999
) );
add_filter('init', 'options_pages');
?>
Чтобы получить поля со страницы параметров, вам нужно передать параметр ‘option’ в get_field()
или the_field()
вот так:
<?php echo get_field('your-field-name', 'option'); ?>
Вы можете прочитать больше о параметрах полей в документации ACF:
https://www.advancedcustomfields.com/add-ons/options-page
https://www.advancedcustomfields.com/resources/acf_add_options_page /
Комментарии:
1. Могу ли я сохранить текущий код страницы темы, содержимое которой поступает из функций have_rows(‘a_group’) и get_sub_field(‘field_from_a_group’)? Будет ли это по-прежнему работать?
2. Да, ваш существующий код все еще должен работать, просто не забудьте добавить параметр ‘option’ для извлекаемых полей options.
3. Я применил параметр ‘option’, но содержимое исчезло. Кроме того, строка add_filter(‘init’, ‘options_pages’) сгенерировала предупреждение: Предупреждение: call_user_func_array() ожидает, что параметр 1 будет допустимым обратным вызовом, функция ‘options_pages’ не найдена или недопустимое имя функции в /usr/local/var/www/wordpress/wp-includes/class-wp-hook . php в строке 286
4. Ошибка была в другой функции, куда я загружал части своей темы. Вставка параметра ‘option’ туда также исправила это сейчас. Кроме того, я удалил эту строку с add_filter, предупреждение прекратилось, и ничего плохого не произошло.