Új bejegyzés állapot hozzáadása WordPress-ben előnézeti képe

Új bejegyzés állapot hozzáadása WordPress-ben

| Olvasási idő: 1 perc

Ha valamilyen szerkesztői workflow-t használtok a WordPress oldalatok esetében, előfordulhat, hogy hasznosak lennének különféle post állapotok - ez a snippet megmutatja, hogyan adhatsz hozzá egy egyedi állapotot. 

Vágjunk is bele a szokásos módon: hozzunk létre egy fájlt az mu-plugins mappában, register-featured-post-status.php néven, az alábbi tartalommal. 

php
<?php
/*
Plugin Name: Register 'Featured' post status
Plugin URI: https://www.webmenedzser.hu
Description: Registers a 'Featured' post status for posts
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPLv3
*/

function register_custom_post_status() {
    register_post_status('featured', array(
        'label'                     => _x( 'Kiemelt', 'post' ),
        'public'                    => false,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'Kiemelt <span class="count">(%s)</span>', 'Kiemelt <span class="count">(%s)</span>' ),
    ) );
}
add_action( 'init', 'register_custom_post_status' );

function append_post_status_list() {
    global $post;

    $complete = '';
    $label = '';

    if ($post->post_type == 'post') {
        if ($post->post_status == 'featured') {
            $complete = ' selected="selected"';
            $label = '<span id="post-status-display"> Kiemelt</span>';
        }

        wp_register_script( 'featured-post-status-jquery', WP_CONTENT_URL . '/mu-plugins/featured-post-status-jquery.js' );
        $data = [
            'complete' => $complete,
            'label' => $label
        ];

        wp_localize_script('featured-post-status-jquery', 'object_name', $data);
        wp_enqueue_script( 'featured-post-status-jquery' );
    }
}
add_action('admin_footer', 'append_post_status_list');

A fenti kód két részből áll: az első regisztrálja a post status-t, a második pedig hozzáadja a poszt állapotok listájához. Mivel ez utóbbihoz egy kis JS-re is szükségünk van, ezért behúzzuk a featured-post-status-jquery.js fájlt az mu-plugins mappánkból (és feltöltjük változó adatokkal, mint a $complete és a $label), melynek tartalma az alábbi (ezt szintén hozzuk létre):

jQuery(document).ready(function($){
    $("select#post_status").append("<option value=\"featured\" '.$complete.'>Kiemelt</option>");
    $(".misc-pub-section label").append("'.$label.'");
});
Fontos, hogy az alábbi kódrészletek NEM működnek Gutenberg-gel (vagyis de, de nem lesz felületünk, ahol beállítsuk a poszt állapotot). Ez két dologra világít rá: egyrészt arra, hogy a fenti snippet jobban hack, mint az eddigiek, másrészt pedig hogy a Gutenberg még mindig nem érte el a feature parity-t a Classic Editor-ral (persze FIXME, ha tévedek, és lehet custom post status-t regisztrálni ott is).

Ha ezekkel megvagyunk, már használható is az egyedi poszt állapotunk - yee! :)