Troppo pigro per aggiungere meta description ai tuoi articoli? Allora, perché non generare automaticamente una meta description dal tuo post di WordPress rimuovendo tutti gli shortcode e i tag? Ecco come fare.
Istruzioni:
Aggiungi questo codice al file functions.php del tuo tema o a un plugin specifico per il sito. Assicurati di avere nell'header.php del tuo tema wordpress o questo snippet non funzionerà.
function create_meta_desc() {
global $post;
if (!is_single()) { return; }
$meta = strip_tags($post->post_content);
$meta = strip_shortcodes($post->post_content);
$meta = str_replace(array("\n", "\r", "\t"), ' ', $meta);
$meta = substr($meta, 0, 125);
echo "<meta name='description' content='$meta' />";
}
add_action('wp_head', 'create_meta_desc');
Nota: Se questa è la prima volta che aggiungi snippet di codice in WordPress, consulta la nostra guida su come copiare / incollare correttamente snippet di codice in WordPress, in modo da non rompere accidentalmente il tuo sito.
Se ti è piaciuto questo snippet di codice, prendi in considerazione la lettura dei nostri altri articoli sul sito come: I migliori page builder di WordPress (confrontati).
Come già menzionato (non ho idea del perché l'autore non aggiorni il suo errore) rimuovi/sostituisci questa parte di codice: $meta = strip_shortcodes($post->post_content); con solo: $meta = strip_shortcodes($meta); altrimenti non ha senso ed è errato e sembra terribile su Google!
Wow, ha rotto il mio sito. Appena lo metti nell'header ottieni un codice di errore, quindi non funziona. Peccato perché è esattamente quello che mi serviva 🙁
quale errore ottieni?
substr() creerà UTF-8 non valido. Usa mb_substr() invece
// aggiungi tag meta description
function wcs_add_meta_description_tag() {
global $post;
if ( is_single() ) {
$meta = strip_tags( $post->post_content );
$meta = strip_shortcodes( $post->post_content );
$meta = str_replace( array(“\n”, “\r”, “\t”), ‘ ‘, $meta );
$meta = mb_substr( $meta, 0, 125, ‘utf8’ );
echo ” . “\n”;
}
}
add_action( ‘wp_head’, ‘wcs_add_meta_description_tag’ , 2 );
Pensi sia possibile prendere il contenuto H2 da un post, limitare il numero di caratteri o parole, e copiarlo nella descrizione per impostazione predefinita? Grazie!
Mi dispiace amico, ma ecco una correzione a questo algoritmo:
function create_meta_desc() {
global $post;
if (!is_single()) { return; }
$meta = strip_tags($post->post_content);
$meta = strip_shortcodes($meta); /* qui devi usare la stessa variabile, altrimenti strip_tags non avrà alcun effetto */
$meta = str_replace(array(“n”, “r”, “t”), ‘ ‘, $meta);
$meta = substr($meta, 0, 125);
echo “”;
}
add_action(‘wp_head’, ‘create_meta_desc’);
[...] [Fonte: WpSnipp] [...]
ha TAG HTML!
Non sono sicuro di cosa intendi? tuttavia i tag HTML vengono rimossi usando "strip_tags"
no, non lo è. Ho dovuto aggiungere strip_tags() subito prima della funzione substr(), ha funzionato