Come aggiungere link ai titoli dei widget in WordPress?
Sto utilizzando tre widget, due dei quali sono widget predefiniti di WordPress (Post Recenti e Archivi) e il terzo è un widget personalizzato che funziona come Post Recenti ma per un Custom Post Type specifico.
La mia domanda è: come posso rendere i titoli dei widget dei link cliccabili? Sembra che WordPress non accetti HTML nel campo del titolo e lo rimuova automaticamente. Idealmente, non vorrei farlo con un plugin anche se so che esistono soluzioni come Linkable Title HTML and PHP Widget. Non è esattamente quello che cerco.
Il codice per il widget personalizzato che ho finora è visibile qui: http://pastie.org/1847651

Rendere il titolo cliccabile
WordPress non consente di inserire codice HTML nel titolo del widget, ma mette a disposizione i parametri utili $before_title
e $after_title
che puoi utilizzare per manipolare gli elementi.
Nel tuo widget, aggiungi semplicemente la prima parte del link (<a href="...">
) alla fine di $before_title
e la parte finale del link (</a>
) all'inizio di $after_title
e il tuo titolo sarà automaticamente collegato.
Devi farlo dopo aver estratto gli argomenti nel metodo widget()
... quindi nel tuo codice, cerca la sezione:
ob_start();
extract($args);
$title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Staff News') : $instance['title'], $instance, $this->id_base);
E aggiungi:
$before_title .= '<a href="http://something.com">';
$after_title = '</a>' . $after_title;
E il tuo titolo sarà collegato!
Modificare i widget predefiniti
Non puoi applicare questo metodo direttamente ai widget predefiniti, ma esiste una soluzione alternativa utilizzando l'ereditarietà degli oggetti. Basta definire i tuoi widget personalizzati che estendono i widget predefiniti:
class My_Widget_Recent_Posts extends WP_Widget_Recent_Posts {
}
Dovrai ridefinire il nome del widget e simili nel costruttore, quindi ridefinire il metodo widget()
copiando ciò che è già presente ma applicando il nostro trucco con $before_title
/$after_title
descritto sopra. La tua nuova versione del widget predefinito avrà titoli cliccabili!

Fantastico, è esattamente quello che cercavo! Ho fatto funzionare il mio widget per i Custom Post Types con il titolo del link cliccabile, ma quando si tratta di estendere il widget predefinito Recent Posts non sono ancora riuscito a completare il lavoro. Ho esteso la classe predefinita e registrato il nuovo widget, ma non compare nel pannello dei widget. Il codice che ho aggiunto al mio file functions.php è: http://pastie.org/1848212

Riesci a vedere dove sto sbagliando nell'estendere la classe predefinita del widget? Ho esteso la classe, rinominato il widget nel costruttore e copiato il contenuto dal widget predefinito Recent Posts. Non ci sono errori, ma non appare nel pannello dei Widget. Ho anche registrato il nuovo widget.

Se i widget predefiniti non offrono la funzionalità che stai cercando, in particolare la possibilità di aggiungere link personalizzati ai titoli, potresti ottenere ciò che desideri scrivendo il tuo widget personalizzato.
http://justintadlock.com/archives/2009/05/26/the-complete-guide-to-creating-widgets-in-wordpress-28
http://churchco.de/the-complete-guide-to-writing-a-wordpress-widget/
Generalmente questo comporta la creazione di un plugin che aggiunge widget personalizzati alla schermata dei widget. Apportare una piccola modifica a un widget esistente è semplice quanto copiare il codice originale e includerlo con le tue modifiche in un plugin.
I widget predefiniti si trovano in wp-includes/default-widgets.php
Modifica Se non hai familiarità con il codice di WordPress, devi decidere se vuoi approfondire la conoscenza. Se è così, devi aggiungere un campo al form del widget che permetta all'utente di inserire l'indirizzo del link, e modificare il codice del widget per inserire il link quando viene visualizzato il titolo.
Se invece non vuoi approfondire, credo che tu sia sfortunato. I widget non offrono la possibilità di modificare le loro capacità senza intervenire direttamente sul codice di WordPress.

Ho creato un widget da questo esempio ma non ho abbastanza familiarità con il codice di WP per sapere come modificarlo e avere un titolo cliccabile. Qualche suggerimento?

Ho appena rilasciato un plugin che permette a chiunque di aggiungere un link nelle impostazioni dei widget. Funziona con la maggior parte dei plugin. Scaricalo qui: http://wordpress.org/extend/plugins/widget-title-links/

In realtà, PUOI inserire direttamente HTML nell'intestazione. Con un po' di codice. Dai un'occhiata a questo articolo che ti mostra come fare:
http://ponderwell.net/2011/05/how-to-use-html-in-wordpresss-widgets-title/

Benvenuto su WordPress Stack Exchange, Alfred! Abbiamo delle utili FAQ qui: Una risposta dovrebbe essere qualcosa di più di appena più di un link a un sito esterno. Potresti aggiungere una spiegazione di base alla tua risposta?
