Come aggiungo HTML all’output_excerpt () e the_content ()?

Sto costruendo un tema in cui ho bisogno di aggiungere un dropcap alla prima lettera. Questo sarebbe fatto circondando il personaggio in questione con e . Il lavoro effettivo per fare il dropcap sarà fatto usando Adobe Dropcap.js .

Mi piacerebbe farlo per l’output di the_excerpt() di sicuro. Inoltre, vorrei aggiungere questo tag span al primo carattere di ogni elemento Paragraph che è un fratello di un elemento H3 (h3 + p).

La mia preferenza è di farlo con PHP anziché scrivere uno script JavaScript o jQuery per analizzare il documento e inserirlo.

Finora ho solo provato questo usando the_excerpt() ed è stato un fallimento totale che ha provocato un errore fatale sulla memoria allocata esaurita. Ma ecco il codice:

 if ( ! function_exists( 'test_excerpt_dropcap' ) ) : function test_excerpt_dropcap() { global $post; $the_excerpt = get_the_excerpt(); if ( is_singular() && has_excerpt() ) { $the_excerpt = preg_replace('/^(.)/', '\1', $the_excerpt); } return $the_excerpt; } add_filter( 'get_the_excerpt', 'test_excerpt_dropcap' ); endif; 

Solutions Collecting From Web of "Come aggiungo HTML all’output_excerpt () e the_content ()?"

get_the_excerpt() restituisce l’estratto, ma solo dopo aver applicato i filtri get_the_excerpt su di esso . Questo causa una ricorsione infinita, dato che il gestore del filtro sarà chiamato a una profondità infinita.

Naturalmente, la soluzione migliore è css (vedi la risposta di @ spacegrrl), ma se hai i motivi per mantenere tale , tieni presente che l’estratto può essere passato come parametro al tuo gestore. Basta aggiungere un parametro $the_excerpt e usarlo, invece di chiamare get_the_excerpt() .

Potresti riuscire a farlo solo con i CSS.

Se esiste una class che ti consente di selezionare l’estratto, puoi utilizzare ulteriori pseudo-classi CSS per selezionare la prima lettera del primo paragrafo.

 .excerpt p:first-of-type::first-letter { /* dropcap styling */ } 

prima di tipo , prima lettera

Utilizzando un selettore di pari livello puoi ottenere il primo tag p dopo ogni h3, per il secondo compito:

 .content h3 + p::first-letter { /* dropcap styling */ } 

selettore fratello adiacente