V minulém článku jsem se věnoval tomu, jak vylepšit vzhled administrace, pokud na webu pracuje více lidí. Dnes budu pokračovat v podobném duchu. Ukážeme si, jak přinutit uživatele, aby ke článku vždy přiložil náhledový obrázek.
Jak by nám jistě potvrdila řada provozovatelů magazínů, lidé jsou chybující a často je jednotný vzhled je tak „rozbitý“ chybějícím obrázkem.
V návodu využijeme dvou akcí – save_post a admin_notices. První se volá, když se článek ukládá a druhá se volá, při kontrole chybových hlášení.
Nejprve přidáme do hooku funkci:
add_action('save_post', 'musilda_control_thumbnail');
Ve funkci samotné nejprve zkontrolujeme, zda jde o post, tedy článek. Obdobně můžeme funkci rozšířit, nebo upravit pro jiné druhy obsahu. Poté zkontrolujeme, zda má článek náhledový obrázek. Pokud ano, pro jistotu odstraníme zápis
chyby, pokud ne, vytvoříme chybové hlášení.
Následně odstraníme funkci z hooku, protože jinak se nám funkce zacyklí a bude se neustále volat. Uložíme článek jako draft.
function musilda_control_thumbnail($post_id){
if(get_post_type($post_id) != 'post')
return;
if ( !has_post_thumbnail( $post_id ) ) {
set_transient( "has_post_thumbnail", "no" );
remove_action('save_post', 'musilda_control_thumbnail');
wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
}else{
delete_transient( "has_post_thumbnail" );
}
}
Nyní musíme připravit chybovou hlášku. Připravíme si funkci do hooku:
add_action('admin_notices', 'musilda_error');
Ve funkci pak zkontrolujeme existenci hodnoty a vytvoříme html kód s chybou:
function musilda_error(){
if ( get_transient( "has_post_thumbnail" ) == "no" ) {
echo "
Příspěvek musí mít náhledový obrázek!
";
delete_transient( "has_post_thumbnail" );
}
}
Při pokusu o publikaci, se článek nepublikuje a zobrazí se hláška:
Samozřejmě, že nejste omezeni jen na náhledový obrázek, můžete kontrolovat například existenci custom fieldů.