В моем предыдущем посте я представил пользовательские типы постов (CPT) и способы их создания для вашего сайта на WordPress.
Мы также рассмотрели, как настраивать различные пользовательские интерфейсы для пользовательских типов сообщений, чтобы они отличались от собственных типов сообщений и типов страниц . Однако мы не рассказали о том, как настраивать создаваемые ими уведомления администратора.
В этом уроке я расскажу, как настроить эти уведомления, а также как зарегистрировать новые таксономии для пользовательского типа записи.
Настройка уведомлений администратора CPT
Вам знакомо предупреждающее сообщение, которое отображается в верхней части страниц администратора, например, когда сообщение сохраняется как черновик, публикуется или даже когда вы сохраняете настройки плагина? Это сообщение называется уведомлением администратора .
По умолчанию уведомления администратора, отображаемые при работе с пользовательским сообщением, предполагают, что вы имеете дело с типом сообщения, и поэтому, например, при обновлении типа сообщения в book
отображается следующее уведомление: Post updated. View post
Post updated. View post
.
Вы можете легко изменить текст этих сообщений с помощью хука post_updated_messages
следующим образом:
add_filter( 'post_updated_messages', 'book_cpt_messages' ); /** * Book CPT updates messages. * * @param array $messages Existing post update messages. * * @return array Amended book CPT notices */ function book_cpt_messages( $messages ) { $post = get_post(); $post_type = get_post_type( $post ); $post_type_object = get_post_type_object( $post_type ); $messages['book'] = array( 0 => '', // Unused. Messages start at index 1. 1 => __( 'Book updated.', 'textdomain' ), 2 => __( 'Custom field updated.', 'textdomain' ), 3 => __( 'Custom field deleted.', 'textdomain' ), 4 => __( 'Book updated.', 'textdomain' ), 5 => isset( $_GET['revision'] ) ? sprintf( __( 'Book restored to revision from %s', 'textdomain' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, 6 => __( 'Book published.', 'textdomain' ), 7 => __( 'Book saved.', 'textdomain' ), 8 => __( 'Book submitted.', 'textdomain' ), 9 => sprintf( __( 'Book scheduled for: <strong>%1$s</strong>.', 'textdomain' ), date_i18n( __( 'M j, Y @ G:i', 'textdomain' ), strtotime( $post->post_date ) ) ), 10 => __( 'Book draft updated.', 'textdomain' ) ); if ( $post_type_object->publicly_queryable ) { $permalink = get_permalink( $post->ID ); $view_link = sprintf( ' <a href="%s">%s</a>', esc_url( $permalink ), __( 'View book', 'textdomain' ) ); $messages[ $post_type ][1] .= $view_link; $messages[ $post_type ][6] .= $view_link; $messages[ $post_type ][9] .= $view_link; $preview_permalink = add_query_arg( 'preview', 'true', $permalink ); $preview_link = sprintf( ' <a target="_blank" href="%s">%s</a>', esc_url( $preview_permalink ), __( 'Preview book', 'textdomain' ) ); $messages[ $post_type ][8] .= $preview_link; $messages[ $post_type ][10] .= $preview_link; } return $messages; }
Пояснение к коду : Приведенный выше код настраивает уведомления администратора, генерируемые пользовательским типом публикации.
Многомерный массив $messages
управляет уведомлениями администраторов, отображаемыми в сообщениях любого типа.
Чтобы настроить сообщения пользовательского типа записи book
, создайте индексный массив, содержащий различные сообщения в качестве значения $messages['book']
.
Оператор if
проверяет, доступен ли пользовательский тип публикации для общего запроса. То есть, установлен ли public
аргумент в значение true
при регистрации пользовательского типа записи .
Если установлено значение true, ссылка для просмотра сообщения, принадлежащего CPT, добавляется к уведомлению администратора, отображаемому при его обновлении, публикации или планировании публикации, в то время как ссылка для предварительного просмотра сообщения добавляется при его отправке на рецензирование или обновлении черновика. ,
Таможенные таксономии
В WordPress таксономия — это механизм группировки сообщений любого типа.
Примеры таксономий включают в себя Category
для группировки сообщений, которые относятся к данной категории, и Tag
который очень похож на категории, но является более свободной формой. Больше информации о таксономиях доступно в Кодексе WordPress .
При этом мы рассмотрим, как создавать собственные таксономии. Давайте возьмем пример создания типа записи книги, классификация записей книги с использованием тех же категорий, что и для записей в блоге, не идеальна.
Примером из реальной жизни является плагин Easy Digital Downloads, который использует пользовательский тип публикации для записей о цифровых продуктах с таксономией download_category
для классификации продуктов.
Чтобы создать собственную таксономию, используйте функцию register_taxonomy()
и подключите ее к действию init
следующим образом:
add_action( 'init', 'book_category_taxonomy' ); function book_category_taxonomy() { register_taxonomy( 'book_category', 'book', array( 'label' => __( 'Book Categories' ), 'rewrite' => array( 'slug' => 'book_category' ), 'hierarchical' => true, ) ); }
Если у вас уже есть пользовательский тип записи book
, вы должны увидеть таксономию категории, добавленную в меню администратора и экран редактирования записи.
Вы также можете использовать register_post_type()
для регистрации пользовательских типов записей, функция register_taxonomy()
также принимает массив аргументов для настройки меток и настройки собственной таксономии.
Я не буду объяснять аргументы, потому что они в значительной степени совпадают с аргументами register_post_type()
. Список аргументов и описаний доступен здесь .
Вывод
Пользовательские типы записей — это мощная функция WordPress, которая полезна для группировки данных или записей записей, которые не вписываются в тип post
и page
. Обледенение на торте — это возможность далее классифицировать посты пользовательского типа поста путем регистрации пользовательской таксономии.
У вас есть вопрос или вклад? Пожалуйста, используйте комментарии, чтобы сообщить нам.