Если вы долгое время читали Martech Zone, возможно, вы заметили мою работу по удалению устаревших статей и обновлению статей, которые популярны, но устарели. Работая над своей страницей новостей в администраторе WordPress, я значительно фильтрую представление, чтобы определить статьи, которые необходимо удалить или обновить.
Одним из полей, которые мне были нужны, была возможность сортировать представление по дате изменения. Я был удивлен, что это невозможно, поэтому я написал следующий код.
Добавить дату изменения к сообщениям с сортировкой
Этот код добавляет Отредактировано столбец в список сообщений администратора WordPress с помощью API WordPress, отображает его рядом с датой публикации, отображает дату и время изменения в нужном формате и делает столбец сортируемым на основе даты изменения. Добавьте это к своему functions.php
файл в вашей дочерней теме:
// Add Date Edited Column
function mtz_custom_columns($columns) {
// Create a new array to hold the reordered columns
$new_columns = array();
// Add all columns before the "Date Edited" column
foreach ($columns as $key => $value) {
$new_columns[$key] = $value;
if ($key === 'date') {
// Add the "Edited" column right after the "Published Date" column
$new_columns['date_edited'] = 'Edited';
}
}
return $new_columns;
}
add_filter('manage_edit-post_columns', 'mtz_custom_columns');
// Display Date Edited Value
function mtz_custom_column_content($column, $post_id) {
if ($column === 'date_edited') {
$post_modified = get_post_field('post_modified', $post_id);
// Format the date and time as "YYYY/MM/DD at 0:00 AM" with line breaks
$formatted_date = date_i18n('Y/m/d \a\t g:i A', strtotime($post_modified));
echo 'Edited<br>' . $formatted_date;
}
}
add_action('manage_post_posts_custom_column', 'mtz_custom_column_content', 10, 2);
// Make Date Edited Column Sortable
function mtz_custom_sortable_columns($columns) {
$columns['date_edited'] = 'post_modified';
return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'mtz_custom_sortable_columns');
Просмотр сообщения администратора WordPress
И вот результат:
Объяснение кода
Давайте подробно разберем предоставленный код, объяснив каждую часть и ее назначение:
// Add Date Edited Column
function mtz_custom_columns($columns) {
// Create a new array to hold the reordered columns
$new_columns = array();
// Add all columns before the "Date Edited" column
foreach ($columns as $key => $value) {
$new_columns[$key] = $value;
if ($key === 'date') {
// Add the "Edited" column right after the "Published Date" column
$new_columns['date_edited'] = 'Edited';
}
}
return $new_columns;
}
add_filter('manage_edit-post_columns', 'mtz_custom_columns');
mtz_custom_columns
функция:
- Эта функция отвечает за добавление нового столбца с именем «Дата редактирования» в список сообщений администратора WordPress.
- Он получает массив
$columns
который представляет существующие столбцы. - Это создает новый массив
$new_columns
для хранения переставленных столбцов. - Он перебирает существующие столбцы и добавляет их в новый массив.
- Когда он встречает столбец «Дата» (который представляет столбец «Дата публикации»), он добавляет столбец «Дата редактирования» сразу после него.
- Наконец, он возвращает новый массив столбцов, включая столбец «Дата редактирования».
add_filter('manage_edit-post_columns', 'mtz_custom_columns')
:
- Эта линия привлекает
mtz_custom_columns
для функционального фильтра «manage_edit-post_columns». Это заставляет WordPress запускать функцию при управлении столбцами на экране редактирования сообщения.
// Display Date Edited Value
function mtz_custom_column_content($column, $post_id) {
if ($column === 'date_edited') {
$post_modified = get_post_field('post_modified', $post_id);
// Format the date and time as "YYYY/MM/DD at 0:00 AM" with line breaks
$formatted_date = date_i18n('Y/m/d \a\t g:i A', strtotime($post_modified));
echo 'Edited<br>' . $formatted_date;
}
}
add_action('manage_post_posts_custom_column', 'mtz_custom_column_content', 10, 2);
mtz_custom_column_content
функция:
- Эта функция отвечает за отображение контента в столбце «Дата редактирования» каждого сообщения.
- Он получает два параметра:
$column
(отображается текущий столбец) и$post_id
(идентификатор текущего сообщения). - Он проверяет, является ли текущий столбец «date_edited» (столбец «Дата редактирования»).
- Если это так, он получает измененную дату и время сообщения, используя
get_post_field
и сохранить его$post_modified
переменная. - Затем он форматирует дату и время как «ГГГГ/ММ/ДД в Ч:ММ AM», используя
date_i18n
который учитывает настройки даты и времени сайта. - Наконец, в первой строке написано «отредактировано», а во второй — форматированные дата и время, разделенные разрывом строки (
<br>
).
add_action('manage_post_posts_custom_column', 'mtz_custom_column_content', 10, 2)
:
- Эта линия привлекает
mtz_custom_column_content
функцию для действия manage_post_posts_custom_column. Это указывает, что функция должна запускаться, когда в столбце сообщения должно отображаться пользовательское содержимое. - Функция привязана к приоритету 10 и принимает 2 параметра (столбец и идентификатор записи).
// Make Date Edited Column Sortable
function mtz_custom_sortable_columns($columns) {
$columns['date_edited'] = 'post_modified';
return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'mtz_custom_sortable_columns');
mtz_custom_sortable_columns
функция:
- Эта функция отвечает за сортировку столбца «Дата редактирования».
- Он получает массив столбцов для сортировки
$columns
. - Он добавляет «date_edited» в качестве сортируемого столбца и связывает его с «post_modified».
- Наконец, он возвращает обновленный массив сортируемых столбцов.
add_filter('manage_edit-post_sortable_columns', 'mtz_custom_sortable_columns')
:
- Эта линия привлекает
mtz_custom_sortable_columns
для функционального фильтра «manage_edit-post_sortable_columns». Это сообщает WordPress, что столбец «Дата изменения» можно отсортировать на основе значения «post_modified».
Если вам нужна помощь в разработке WordPress, свяжитесь с моей фирмой Highbridge. Мы можем помочь с разработкой индивидуальных тем, разработкой плагинов, оптимизацией, производительностью и многим другим.