Если вы долгое время читали 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');
  1. mtz_custom_columns функция:
  • Эта функция отвечает за добавление нового столбца с именем «Дата редактирования» в список сообщений администратора WordPress.
  • Он получает массив $columns который представляет существующие столбцы.
  • Это создает новый массив $new_columns для хранения переставленных столбцов.
  • Он перебирает существующие столбцы и добавляет их в новый массив.
  • Когда он встречает столбец «Дата» (который представляет столбец «Дата публикации»), он добавляет столбец «Дата редактирования» сразу после него.
  • Наконец, он возвращает новый массив столбцов, включая столбец «Дата редактирования».
  1. 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);
  1. mtz_custom_column_content функция:
  • Эта функция отвечает за отображение контента в столбце «Дата редактирования» каждого сообщения.
  • Он получает два параметра: $column (отображается текущий столбец) и $post_id (идентификатор текущего сообщения).
  • Он проверяет, является ли текущий столбец «date_edited» (столбец «Дата редактирования»).
  • Если это так, он получает измененную дату и время сообщения, используя get_post_field и сохранить его $post_modified переменная.
  • Затем он форматирует дату и время как «ГГГГ/ММ/ДД в Ч:ММ AM», используя date_i18nкоторый учитывает настройки даты и времени сайта.
  • Наконец, в первой строке написано «отредактировано», а во второй — форматированные дата и время, разделенные разрывом строки (<br>).
  1. 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');
  1. mtz_custom_sortable_columns функция:
  • Эта функция отвечает за сортировку столбца «Дата редактирования».
  • Он получает массив столбцов для сортировки $columns.
  • Он добавляет «date_edited» в качестве сортируемого столбца и связывает его с «post_modified».
  • Наконец, он возвращает обновленный массив сортируемых столбцов.
  1. add_filter('manage_edit-post_sortable_columns', 'mtz_custom_sortable_columns'):
  • Эта линия привлекает mtz_custom_sortable_columns для функционального фильтра «manage_edit-post_sortable_columns». Это сообщает WordPress, что столбец «Дата изменения» можно отсортировать на основе значения «post_modified».
ЧИТАТЬ  Как антимонопольное дело Google влияет на рекламную экосистему | Зона Мартех

Если вам нужна помощь в разработке WordPress, свяжитесь с моей фирмой Highbridge. Мы можем помочь с разработкой индивидуальных тем, разработкой плагинов, оптимизацией, производительностью и многим другим.

Source