Одной из областей области Martech, которая продолжает привлекать много трафика на мой сайт, является моя растущая документация по продажам, маркетингу и технологиям. Я продолжаю увеличивать список почти до 600, а также помечаю сообщения аббревиатурой, чтобы последние сообщения отображались на одной странице отображения аббревиатуры.
Этот настраиваемый тип сообщения, который я создал, состоит из трех важных элементов:
- Заголовок – сама аббревиатура.
- Определение — что означает аббревиатура.
- Содержание – фактическое описание аббревиатуры.
В WordPress заголовок и контент включены в любой тип элемента записи, поэтому определение нужно было добавить с помощью настраиваемого поля, которое включается с помощью Meta Box. Однако есть одна нерешенная проблема: отображение определения на странице администратора, в которой перечислены все мои акронимы.
В файл functions.php вы можете добавить произвольное поле в ваши административные столбцы. В данном случае я просто делаю это ради аббревиатуры. пользовательский тип записи. Вы хотите обновить текстовый домен в коде своей темы или дочерней темы.
// Add a new 'Definition' column to the Acronym post list
add_filter('manage_acronym_posts_columns', 'add_definition_column_to_acronym_list');
function add_definition_column_to_acronym_list($columns) {
$new = array();
foreach($columns as $key => $title) {
if ($key == 'title') // Put the Definition column after the Title column
$new['acronym_definition'] = __( 'Definition', 'textdomain' );
$new[$key] = $title;
}
return $new;
}
// Fill the new 'Definition' column with the values from 'acronym_definition' custom field
add_action('manage_acronym_posts_custom_column', 'add_definition_column_content_to_acronym_list', 10, 2);
function add_definition_column_content_to_acronym_list($column, $post_id) {
if ($column == 'acronym_definition') {
$definition = get_post_meta($post_id, 'acronym_definition', true);
if (!empty($definition)) {
echo $definition;
} else {
echo __('No definition', 'textdomain');
}
}
}
Это добавит столбец в качестве первого столбца на странице администрирования. Мне бы очень хотелось, чтобы это был второй столбец, поэтому я изменил код, чтобы добавить столбец после столбца заголовка.
// Add a new 'Definition' column to the Acronym post list
add_filter('manage_acronym_posts_columns', 'add_definition_column_to_acronym_list');
function add_definition_column_to_acronym_list($columns) {
$new_columns = array();
foreach($columns as $key => $value) {
$new_columns[$key] = $value;
if ($key === 'title') {
$new_columns['acronym_definition'] = __('Definition', 'textdomain');
}
}
return $new_columns;
}
// Fill the new 'Definition' column with the values from 'acronym_definition' custom field
add_action('manage_acronym_posts_custom_column', 'add_definition_column_content_to_acronym_list', 10, 2);
function add_definition_column_content_to_acronym_list($column, $post_id) {
if ($column === 'acronym_definition') {
$definition = get_post_meta($post_id, 'acronym_definition', true);
echo $definition ? $definition : __('No definition', 'textdomain');
}
}
Теперь я могу легко перемещаться по своим аббревиатурам и видеть их определения:
Он добавил столбец, но не сделал его сортируемым. Чтобы сделать его сортируемым, код может включать сортируемый элемент, а также запрос на предварительную загрузку списка.
// Add a new 'Definition' column to the Acronym post list
add_filter('manage_acronym_posts_columns', 'add_definition_column_to_acronym_list');
function add_definition_column_to_acronym_list($columns) {
$new_columns = array();
foreach($columns as $key => $value) {
$new_columns[$key] = $value;
if ($key === 'title') {
$new_columns['acronym_definition'] = __('Definition', 'textdomain');
}
}
return $new_columns;
}
// Fill the new 'Definition' column with the values from 'acronym_definition' custom field
add_action('manage_acronym_posts_custom_column', 'add_definition_column_content_to_acronym_list', 10, 2);
function add_definition_column_content_to_acronym_list($column, $post_id) {
if ($column === 'acronym_definition') {
$definition = get_post_meta($post_id, 'acronym_definition', true);
echo $definition ? $definition : __('No definition', 'textdomain');
}
}
// Make the 'Definition' column sortable
add_filter('manage_edit-acronym_sortable_columns', 'make_definition_column_sortable');
function make_definition_column_sortable($columns) {
$columns['acronym_definition'] = 'acronym_definition';
return $columns;
}
// Customize the query that sorts the 'Definition' column
add_action('pre_get_posts', 'sort_definition_column');
function sort_definition_column($query) {
if (!is_admin() || !$query->is_main_query()) {
return;
}
if ($query->get('orderby') == 'acronym_definition') {
$query->set('meta_key', 'acronym_definition');
$query->set('orderby', 'meta_value');
}
}