Статьи

Добавление пользовательских метаданных публикации в таблицу списка публикаций

Одна из лучших вещей в WordPress — это то, что вы можете настроить практически все. В админке вы можете увидеть список всех постов, которые вы добавили в WordPress. В этой таблице показана основная информация для каждого сообщения, заголовок, автор, категория, теги, комментарии и дата публикации сообщения.

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

В этой статье вы узнаете, как добавлять новые столбцы в список записей, как добавлять данные в столбец и как можно сортировать этот столбец.

Добавить новые столбцы

Сначала мы начнем с добавления нового столбца в список, для этого мы используем фильтр WordPress manage_edit-post_columns . Это позволит вам редактировать выходные данные столбцов, добавляя новые значения в массив столбцов. Функция обратного вызова в этом фильтре передаст один параметр, который является текущими столбцами в списке, а возвращением этой функции будут новые столбцы в таблице записей. Это означает, что мы можем добавить дополнительные значения в массив, чтобы добавить дополнительные столбцы в таблицу.

Следующий код добавит новый столбец в таблицу сразу после столбца заголовка.

// Add a column to the edit post list
add_filter( 'manage_edit-post_columns', 'add_new_columns');
/**
 * Add new columns to the post table
 *
 * @param Array $columns - Current columns on the list post
 */
function add_new_columns( $columns ) {
 	$column_meta = array( 'meta' => 'Custom Column' );
	$columns = array_slice( $columns, 0, 2, true ) + $column_meta + array_slice( $columns, 2, NULL, true );
	return $columns;
}

Добавить столбцы к пользовательским типам записей

Если у вас есть пользовательские типы записей на вашем сайте и вы хотите добавить дополнительные столбцы в этот список, WordPress поставляется со встроенными фильтрами, которые можно применять для добавления новых столбцов в эту таблицу.

add_filter( 'manage_${post_type}_posts_columns', 'add_new_columns');

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

function add_portfolio_columns($columns) {
    return array_merge($columns,
              array('client' => __('Client'),
                    'project_date' =>__( 'Project Date')));
}
add_filter('manage_portfolio_posts_columns' , 'add_portfolio_columns');

Добавить данные в пользовательские столбцы

После того, как вы создали новые столбцы для списка сообщений, теперь вы можете добавлять данные в новые столбцы с помощью действия WordPress manage_posts_custom_column . Добавление действия к этому будет вызываться в каждом столбце, из этого вызова мы можем получить данные для публикации, отображающие ее в списке записей.

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

// Add action to the manage post column to display the data
add_action( 'manage_posts_custom_column' , 'custom_columns' );
/**
 * Display data in new columns
 *
 * @param  $column Current column
 *
 * @return Data for the column
 */
function custom_columns( $column ) {
	global $post;
	switch ( $column ) {
		case 'meta':
			$metaData = get_post_meta( $post->ID, 'twitter_url', true );
			echo $metaData;
		break;
	}
}

Добавить данные в столбцы пользовательских типов записей

Помимо возможности добавления фильтра к пользовательским типам записей путем добавления новых столбцов, WordPress имеет встроенное действие, которое можно использовать для добавления данных в пользовательские столбцы.

В приведенном выше примере мы добавляем новый столбец только для типов записей портфолио, чтобы добавить два новых столбца в список, используя код ниже, вы можете добавить данные в эти новые столбцы.

function custom_portfolio_column( $column, $post_id ) {
    switch ( $column ) {
      case 'project_date':
        echo get_post_meta( $post_id , 'project_date' , true );
        break;
      case 'client':
        echo get_post_meta( $post_id , 'client' , true );
        break;
    }
}
add_action( 'manage_portfolio_posts_custom_column' , 'custom_portfolio_column' );

Сделать столбцы сортируемыми

По умолчанию новые настраиваемые столбцы не сортируются, что затрудняет поиск нужных вам данных. Для сортировки пользовательских столбцов в WordPress есть еще один фильтр manage_edit-post_sortable_columns, который можно использовать для назначения столбцов, которые можно сортировать.

Когда это действие будет выполнено, функция передаст параметр всех столбцов, которые в настоящее время сортируются, добавление новых пользовательских столбцов в этот список теперь сделает эти столбцы сортируемыми. Значение, которое вы дадите, будет использовано в URL, чтобы WordPress понимал, по какому столбцу упорядочить.

Следующее, чтобы позволить вам сортировать по мета пользовательского столбца.

// Register the column as sortable
function register_sortable_columns( $columns ) {
    $columns['meta'] = 'Custom Column';
    return $columns;
}
add_filter( 'manage_edit-post_sortable_columns', 'register_sortable_columns' );

Это все, что вам нужно, чтобы изменить способ публикации сообщений в вашей административной области. Какую полезную информацию вы хотели бы видеть в списке сообщений?