Povinné vložení náhledového obrázku u příspěvku
Jak by nám jistě potvrdila řada provozovatelů magazínů, lidé jsou chybující a jednotný vzhled je tak často „rozbitý“ chybějícím obrázkem. Ukážeme si tedy, jak přinutit uživatele, aby ke článku vždy přiložil náhledový obrázek.
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:
1 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 |
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:
1 |
add_action('admin_notices', 'musilda_error'); |
Ve funkci pak zkontrolujeme existenci hodnoty a vytvoříme html kód s chybou:
1 2 3 4 5 6 7 8 9 10 |
function musilda_error(){ if ( get_transient( "has_post_thumbnail" ) == "no" ) { echo "<div id='message' class='error'> <p> <strong>Příspěvek musí mít náhledový obrázek!</strong> </p> </div>"; 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ů.
Napsat komentář