Користувальницькі типи посад в WordPress – повідомлення і таксономії

13

Від автора: у своїй попередній статті я познайомив вас з користувацькими типами посад (від англ. CPT) у WordPress і вас навчив їх створювати. у цій статті я покажу вам, як налаштувати повідомлення, а також навчу вас реєструвати нові таксономії для користувацьких типів постів WordPress.

Також раніше ми навчилися змінювати назви різних елементів UI для користувацьких типів постів, щоб вміти їх відрізняти від рідних типів post page. Однак ми не розібрали, як налаштовувати повідомлення в панелі адміністратора, згенеровані такими типами посад.

Налаштування CPT повідомлень в панелі адміністратора

Ви хоч раз бачили попереджувальні повідомлення, спливаючі зверху панелі адміністратора при збереженні посади в якості чернетки, публікації поста або при збереженні налаштувань плагіна? Такі сполучення називаються повідомленнями панелі адміністратора.

За замовчуванням при роботі над постом відображаються повідомлення, і передбачається, що ви працюєте з типом постів post, тому, наприклад, якщо оновити пост типу book, з’явиться наступне повідомлення: 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 Поправками 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 => «, // не використовується. Повідомлення починається з індексу 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: %1$s.’, ‘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( ‘%s’, 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( ‘%s’, esc_url( $preview_permalink ), __( ‘Preview book’, ‘textdomain’ ) );
$messages[ $post_type ][8] .= $preview_link;
$messages[ $post_type ][10] .= $preview_link;
}
return $messages;
}

Пояснення коду: Код вище налаштовує адміністративні повідомлення, що генеруються користувальницьким типом постів book.

$messages – багатовимірний масив, з допомогою якого налаштовується відображення повідомлень від будь-якого типу посту.
Для зміни повідомлення поста типу book, створіть масив індексів з різними повідомленнями, як у значенні $messages[‘book’].

Умова if перевіряє користувальницький пост на публічну доступність. Тобто встановлено аргумент public в true під час реєстрації користувальницького типу посту.

Якщо встановлено значення true, то посилання на перегляд CPT посту додається в адміністративне повідомлення при оновленні, публікації та плануванні публікації поста, а посилання на попередній додається при передачі на схвалення поста або при оновленні чернетки.

Користувальницькі таксономії

Таксономії в WordPress дозволяють групувати посади з будь-яких типів. До прикладів класифікацій можна віднести Category для групування посад за певної категорії і Tag, який дуже схожий на категорії, але в більш вільній формі. Більш детально про таксономиях можна прочитати в кодексі WordPress.

Нижче ми розглянемо, як створити власну таксономію. Візьмемо приклад створення поста з типом book, тоді класифікувати дані пости з допомогою тих самих категорій для постів блогу не найкраща ідея.

Живий приклад — Easy Digital Download, плагін, що використовує тип постів download для цифрових записів товарів з допомогою таксономії 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, ви повинні помітити, що таксономія категорії додалася в меню зліва і на екран редагування постів.

Користувальницькі типи посад в WordPress – повідомлення і таксономії

Користувальницькі типи посад в WordPress – повідомлення і таксономії

Для реєстрації користувацьких типів постів також можна використовувати register_post_type(), а функція register_taxonomy() крім усього іншого приймає масив аргументів, з допомогою якого можна змінити назви та конфігурацію користувача таксономії.

Я не буду пояснювати аргументи масиву, так як вони майже такі ж, як і у register_post_type(). Список аргументів і описів можна знайти за посиланням.

Висновок

Користувальницькі типи постів досить потужна функція WordPress, а також вона корисна при групуванні даних або постів, не підпадають під стандартні типи post page. А вишенькою на торті є те, що можна додатково класифікувати пости типу за допомогою реєстрації своєї таксономії.

У вас виникли питання або бажаєте щось додати? Будь ласка, пишіть про це в коментарях.