Vlastní statusy pro články

Máte vlastní magazín, či web, na kterém pracuje více uživatelů a potřebujete přidat ke článkům statusy, které ve WordPressu nejsou? V dnešním článku si ukážeme, jak na to. Typický příklad je obsáhlý web, na němž se podílí více uživatelů, v různých rolích. Někdo může být…

Obsah článku

Přidejte záhlaví a začněte generovat tabulku obsahu

Máte vlastní magazín, či web, na kterém pracuje více uživatelů a potřebujete přidat ke článkům statusy, které ve WordPressu nejsou? V dnešním článku si ukážeme, jak na to.

Typický příklad je obsáhlý web, na němž se podílí více uživatelů, v různých rolích. Někdo může být autor, někdo dělá korekci článků, kontroluje pravopis, vhodnost článku, či jej konečně schválí. V takovém případě je důležité dát tomu, kdo bude na článku pracovat po vás, vědět, jaký status právě má. A proto se hodí mít možnost vytvoření vlastních statusů článků.

Pro mé potřeby jsem si připravil následující statusy:

  • Nekontrolováno
  • Pravopisné chyby
  • Zamítnuto
  • Schváleno

Jako první si přidáme rozbalovací výběr statusů do metaboxu v detailu příspěvku:

add_action( 'post_submitbox_misc_actions', 'custom_status_metabox' );

Post submit box, je metabox, kde nastavujete publikaci článků. Přidáme kód pro zobrazení selectu:

function custom_status_metabox(){
global $post;
$custom  = get_post_custom($post->ID);
if(!empty($custom["_status"])){
$status  = $custom["_status"][0];
}
$i   = 0;
$custom_status = array(
'Pravopisné chyby',
'Korekce',
'Zamítnuto',
'Schváleno',
);
$html  = '
‚; $html .= ‚‚; $html .= ‚
Nekontrolováno
‚; $html .= ‚
—————–
‚; for($i=0;$i<count($custom_status);$i++){ if($status == $custom_status[$i]){ $html .= ‚
‚. $custom_status[$i].‘
‚; }else{ $html .= ‚
‚.$custom_status[$i].‘
‚; } } $html .= ‚
‚; $html .= ‚
';
echo $html;
}

Výsledek:
Upravit příspěvek

Uložíme hodnotu výběru:

add_action('save_post', 'save_status');
function save_status(){
global $post;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){ return $post->ID; }
if(!empty($_POST["status"])){
update_post_meta($post->ID, "_status", $_POST["status"]);
}
}

Vytvoříme styly pro barevné označení statusu:

add_action( 'admin_head', 'status_css' );
function status_css() {
echo '
.custom_status{
font-size:9px;
color:#666;
background:#e5e5e5;
padding:3px 6px 3px 6px;
-moz-border-radius:3px;
}
.pravopisne-chyby{background:#CB4BEB;color:#fff;}
.zamitnuto{background:#FF0000;color:#fff;}
.source{background:#D7E01F;color:#333;}
.schvaleno{background:#DE9414;color:#333;}
';
}

Pokud bych měl jít do detailu, bylo by vhodné pomocí podmínky omezit výpis stylu jen na stránku s příspěvky. Takto se zobrazí v hlavičce administrace pokaždé.
Po uložení statusu, se zobrazí jeho název za názvem příspěvku. Pokud má příspěvek nějaký defaultní WordPress status, zobrazí se ten náš až za ním.
Příspěvky

2 komentáře: „Vlastní statusy pro články“

  1. Tomáš avatar

    Pěkné články, Vláďo. Jen tak dál.