Вопрос или проблема
У меня есть пользовательский тип записи под названием Book
, и я хочу добавить пользовательские столбцы издателя и автора книги на странице редактирования.
Я также хочу получить конкретное значение из каждого поля (я создал два поля для вышеперечисленных столбцов), чтобы отобразить его в этих двух дополнительных столбцах. На самом деле я могу отобразить это с помощью кода ниже, но дело в том, что мне нужно объявить переменную (например: переменная $value
) для каждой данных.
Поэтому, не могли бы вы поделиться идеями о том, как отобразить это с помощью циклов или чего-то подобного.
add_filter( 'manage_book_posts_columns', 'set_custom_edit_book_columns' );
add_action( 'manage_book_posts_custom_column' , 'custom_book_column', 10, 2 );
function set_custom_edit_book_columns($columns) {
$value = get_field( "contact_person" );
unset( $columns['author'] );
$columns['book_author'] = __( 'Автор', 'your_text_domain' );
$columns['publisher'] = __( 'Издатель', 'your_text_domain' );
return $columns;
}
function custom_book_column( $column, $post_id ) {
switch ( $column ) {
case 'book_author' :
$value = get_field( "contact_person" );
$terms = get_the_term_list( $post_id , '$value' , '' , ',' , '' );
if ( is_string( $value ) )
echo $value;
else
_e( 'Не удалось получить автора(ов)', 'your_text_domain' );
break;
case 'publisher' :
echo get_post_meta( $post_id , 'publisher' , true );
break;
}
}
Может быть, вам просто нужно изменить это на:
case 'book_author' :
$value = get_field( "contact_person", $post_id );
Второй параметр, вероятно, необходим, так как он находится в цикле, но не в The Loop
.
Ответ или решение
Добавление пользовательских колонок в таблицу постов — важная задача для оптимизации управления контентом в WordPress, особенно когда речь идет о пользовательских типах записей, таких как «Книга». В данном руководстве мы рассмотрим, как добавить пользовательские колонки для отображения информации о «Авторе книги» и «Издателе» с использованием пользовательских полей.
Шаг 1: Регистрация пользовательских колонок
Сначала мы будем использовать хук manage_book_posts_columns
, чтобы добавить новые колонки в таблицу редактирования постов. Откройте файл functions.php
вашей темы или создайте плагин для этого кода.
add_filter('manage_book_posts_columns', 'set_custom_edit_book_columns');
function set_custom_edit_book_columns($columns) {
unset($columns['author']); // Удаляем колонку автора, если это необходимо
$columns['book_author'] = __('Автор', 'your_text_domain');
$columns['publisher'] = __('Издатель', 'your_text_domain');
return $columns;
}
Шаг 2: Заполнение пользовательских колонок
После того как колонки зарегистрированы, следующим шагом будет заполнение этих колонок данными по каждому посту. Для этого мы используем хук manage_book_posts_custom_column
.
add_action('manage_book_posts_custom_column', 'custom_book_column', 10, 2);
function custom_book_column($column, $post_id) {
switch ($column) {
case 'book_author':
$author_value = get_field("contact_person", $post_id); // Получаем значение поля для автора
if ($author_value) {
echo esc_html($author_value); // Отображаем значение, очищенное от потенциальных уязвимостей
} else {
_e('Не удалось получить автора(ов)', 'your_text_domain');
}
break;
case 'publisher':
$publisher_value = get_post_meta($post_id, 'publisher', true); // Получаем значение мета-поля для издателя
if ($publisher_value) {
echo esc_html($publisher_value); // Отображаем значение, очищенное от потенциальных уязвимостей
} else {
_e('Не удалось получить издателя', 'your_text_domain');
}
break;
}
}
Объяснение кода
-
Регистрация колонок:
- Мы используем функцию
set_custom_edit_book_columns
, чтобы модифицировать существующие колонки и добавитьbook_author
иpublisher
. - Удаление колонки автора может быть полезным, если вы хотите избежать дублирования информации.
- Мы используем функцию
-
Заполнение колонок:
- В функции
custom_book_column
мы используемget_field()
для получения пользовательских данных, созданных с помощью плагина ACF (Advanced Custom Fields), илиget_post_meta()
для получения стандартных мета-данных. - Мы также добавили проверки на наличие данных и очистку вывода через
esc_html()
, чтобы защитить ваш сайт от потенциальных уязвимостей XSS.
- В функции
Заключение
С помощью приведенного кода вы сможете успешно добавить и заполнить пользовательские колонки на странице редактирования ваших записей типа «Книга». Не забудьте протестировать функциональность на сайте, чтобы убедиться, что информация отображается корректно. Это не только улучшит управление вашими постами, но и повысит производительность вашей работы с содержимым.
Следуя этим рекомендациям, вы не только улучшите пользовательский интерфейс, но и сделаете процесс управления контентом более удобным и эффективным.
SEO Оптимизация
При написании этого руководства мы собрали полезные ключевые слова, такие как «WordPress», «пользовательские поля», «колонки постов» и «управление контентом», чтобы упростить поиск информации и увеличить видимость вашего контента в поисковых системах.