Как редактировать содержимое архивной страницы в админке WordPress?
У меня есть страница, которая является пользовательским архивом, отображающим список записей. Проблема в том, что клиент хочет иметь возможность редактировать сам контент архивной страницы (изображение и заголовок), а не только содержимое записей. Всё это должно быть доступно для редактирования прямо в админке, чтобы клиенту было удобно. Есть ли способ сделать так, чтобы пользовательский шаблон архивной страницы отображался в разделе "Страницы"? Или вообще сделать его редактируемым через админку? Спасибо!

Создание таксономии и предоставление клиенту возможности редактировать название и описание термина — это вариант, который я бы рассмотрел.
Тема может использовать, а может и не использовать пользовательский файл шаблона для управления внешним видом архива пользовательского типа записи (CPT).
Использование шаблона страницы (page-template) было бы не лучшим решением, потому что одновременная загрузка типа записи и страницы по одному URL может вызвать проблемы.
Использование настроек темы (theme-options) было бы хорошим подходом. Настройка темы в сочетании с пользовательским шаблоном архива для типа записи могла бы решить задачу.
Чтобы узнать, как создать настройки темы, см. этот пример: https://codex.wordpress.org/Creating_Options_Pages#Example_.232
А для пользовательских шаблонов страниц (custom-page templates) вам поможет эта статья: https://developer.wordpress.org/themes/basics/template-hierarchy/#visual-overview

В зависимости от настройки существует несколько способов решения этой задачи. Я предполагаю, что наиболее вероятный сценарий — вы используете стороннюю тему, а значит, не можете редактировать файлы темы самостоятельно (этого действительно не следует делать, так как обновления удалят ваши изменения). Это несколько ограничивает ваши возможности, и самым простым решением, как уже предлагалось в других ответах, будет просто заполнить содержимое категории в меню "Записи" в админ-панели. Существуют плагины, которые позволяют добавлять дополнительный контент, например, избранное изображение: Category Featured Image
Вы также можете создать собственный плагин, который предоставит больший контроль над тем, что вы добавляете в категории. Вот фрагмент кода, который я использовал для добавления палитры цветов и чекбокса к пользовательской таксономии. Конечно, его можно применить и к существующей таксономии.
function yourplugin_taxonomy_custom_fields( $tag ) {
$t_id = $tag->term_id;
$term_meta = get_option( 'taxonomy_term_'.$t_id );
$level_public = $term_meta['level_public'];
if ( $level_public == 'true' ) {
$checked = ' checked="checked"';
} else {
$checked = '';
}
?>
<tr class="form-field">
<th scope="row" valign="top">
<label for="level_colour"><?php _e('Цвет уровня игрока'); ?></label>
</th>
<td>
<input type="text" name="term_meta[level_colour]" id="term_meta[level_colour]" class="ifs-pp-colour-picker" value="<?php echo $term_meta['level_colour'] ? $term_meta['level_colour'] : ''; ?>">
<p class="description"><?php _e('Выберите цвет метки для этого уровня игрока.'); ?></p>
<script type="text/javascript">
jQuery( document ).ready( function( $ ) {
$( '.ifs-pp-colour-picker' ).wpColorPicker();
} );
</script>
</td>
</tr>
<tr class="form-field">
<th scope="row" valign="top">
<label for="level_public"><?php _e('Видимость уровня игрока'); ?></label>
</th>
<td>
<input type="checkbox" name="term_meta[level_public]" id="term_meta[level_public]" value="true"<?php echo $checked; ?>>Уровень виден пользователям при просмотре профилей игроков.
<p class="description"><?php _e('Укажите, должен ли этот уровень игрока отображаться на странице профиля или нет. Это полезно для предоставления контекста к некоторым оценкам. В некоторых случаях пользователям может быть полезно понимать, что оценки игрока относятся к его категории или уровню игры.'); ?></p>
</td>
</tr>
<?php }
add_action( 'yourplugin_player_levels_edit_form_fields', 'yourplugin_taxonomy_custom_fields', 10, 2 );
function save_yourplugin_custom_fields( $term_id ) {
if ( isset( $_POST['term_meta'] ) ) {
$t_id = $term_id;
$term_meta = get_option( 'taxonomy_term_'.$t_id );
$cat_keys = array_keys( $_POST['term_meta'] );
foreach ( $cat_keys as $key ){
if ( isset( $_POST['term_meta'][$key] ) ){
$term_meta[$key] = $_POST['term_meta'][$key];
}
}
update_option( 'taxonomy_term_'.$t_id, $term_meta );
} else {
delete_option( 'taxonomy_term_'.$t_id, $term_meta );
}
}
add_action( 'edited_yourplugin_player_levels', 'save_yourplugin_custom_fields', 10, 2 );
Если вы хотите добавить палитру цветов, вам нужно правильно подключить скрипты и т.д. (Это должно покрыть процесс.)
Обратите внимание, что при таком варианте вам всё равно нужно иметь возможность редактировать файл archive-cpt.php, чтобы использовать новые добавленные опции. В зависимости от используемой темы, вы можете редактировать его самостоятельно или, возможно, ваша сторонняя тема предоставляет хуки, которые может использовать ваш плагин.
Однако, если вы используете пользовательскую дочернюю тему или пользовательскую тему, у вас гораздо больше гибкости, и вы можете настроить шаблоны архивов — тогда вы сможете контролировать, какой контент в них передаётся. Вы можете управлять содержимым, добавляя опции темы, которые описаны в ответе @admcfajn, или используя опции категорий, которые я описал выше.

Конечно, это можно сделать. Для таксономий (категории, метки, любые пользовательские таксономии - я предполагаю, что это то, что вам нужно) это просто, у каждой из них есть своя страница в панели управления - смотрите в разделе "Записи" -> "Категории"/"Метки" -> "Редактировать категорию". Там есть стандартное поле "Описание", но вы можете добавить больше (фото, что угодно) через functions.php или с помощью какого-нибудь плагина. Естественно, вам придется сначала самостоятельно отредактировать шаблоны, чтобы они получали содержимое нужных полей.
