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 = '
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;
}
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.