Как изменить порядок записей в админ-панели?
Как я могу изменить порядок записей в панели администратора, чтобы они отображались в алфавитном порядке по заголовку, а не по дате публикации?

Если вы не хотите каждый раз нажимать на колонку "Заголовок" для сортировки записей по названию, вы можете добавить этот код в файл functions.php
вашей текущей активной темы WordPress или в плагин. Это позволит автоматически сортировать записи, избавляя вас от необходимости каждый раз кликать на заголовок колонки.
Этот код можно использовать для установки порядка сортировки по умолчанию для типов записей.
/* Сортировка записей в wp_list_table по колонке в порядке возрастания или убывания. */
function custom_post_order($query){
/*
Установка типов записей.
_builtin => true возвращает стандартные типы записей WordPress.
_builtin => false возвращает пользовательские зарегистрированные типы записей.
*/
$post_types = get_post_types(array('_builtin' => true), 'names');
/* Текущий тип записи. */
$post_type = $query->get('post_type');
/* Проверка типов записей. */
if(in_array($post_type, $post_types)){
/* Колонка записи: например, title */
if($query->get('orderby') == ''){
$query->set('orderby', 'title');
}
/* Порядок сортировки: ASC / DESC */
if($query->get('order') == ''){
$query->set('order', 'ASC');
}
}
}
if(is_admin()){
add_action('pre_get_posts', 'custom_post_order');
}
Вы можете использовать некоторые из этих примеров условий...
/* Влияет на все типы записей в массиве. */
if(in_array($post_type, $post_types)){
}
/* Влияет только на определенный тип записи в массиве типов записей. */
if(in_array($post_type, $post_types) && $post_type == 'your_post_type_name'){
}
/* Влияет на все типы записей в массиве, кроме указанного. */
if(in_array($post_type, $post_types) && $post_type != 'your_post_type_name'){
}
Если вы хотите применить эту сортировку ко ВСЕМ типам записей, независимо от того, являются ли они "встроенными"...
Замените это:
$post_types = get_post_types(array('_builtin' => true), 'names');
На это:
$post_types = get_post_types('', 'names');

Можно ли использовать это внутри функции вместо проверки перед действием if ( ! is_admin ) {
return;
}

Обязательно добавьте "return $query;" перед завершением функции, иначе это не будет работать в более поздних версиях WordPress.

function custom_field() {
add_meta_box(
'post_priority',
'Приоритет записи',
'priority_meta_box',
'post',
'normal',
'low'
);
}
add_action('add_meta_boxes', 'custom_field');
function priority_meta_box($post) {
$priority = get_post_meta($post->ID, 'post_priority', true);
?>
<label for="post_priority">Приоритет записи:</label>
<input type="number" id="post_priority" name="post_priority" value="<?php echo $priority; ?>" min="1">
<?php
}
// Сохранение значения пользовательского поля
function handle_priority_submit($post_id) {
if (array_key_exists('post_priority', $_POST)) {
$priority = $_POST['post_priority'];
if ($priority >=1){
update_post_meta($post_id,'post_priority',$priority);
}
}
}
add_action('save_post','handle_priority_submit');
function sort_posts_by_priority_in_admin($query) {
if ($query->get('post_type') === 'post') {
$query->set('meta_key', 'post_priority');
$query->set('orderby', 'meta_value_num');
$query->set('order', 'ASC');
}
}
add_action('pre_get_posts', 'sort_posts_by_priority_in_admin');
// Для добавления колонки в админке (добавление колонки в админке записей stack exchange)
add_filter('manage_posts_columns', 'add_priority_column');
function add_priority_column($columns) {
$columns['post_priority'] = 'Приоритет';
return $columns;
}
add_action('manage_posts_custom_column', 'priority_column_value', 10, 2);
function priority_column_value($column, $post_id) {
if ($column == 'post_priority') {
$priority = get_post_meta($post_id, 'post_priority', true);
echo esc_html($priority ? $priority : '—');
}}
