Come aggiungere link ai titoli dei widget in WordPress?

28 apr 2011, 14:38:28
Visualizzazioni: 17.8K
Voti: 5

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

3
Commenti

Ian, puoi includere il codice per il widget che hai creato?

EAMann EAMann
29 apr 2011 18:44:36

Ho appena aggiornato la mia domanda con un link al codice del widget. Anche se devo aggiungere dei link al titolo di questo widget personalizzato, vorrei anche aggiungere dei link ai widget predefiniti 'Post Recenti' e 'Archivio' se possibile.

Ian Young Ian Young
29 apr 2011 18:51:38

questo funziona bene grazie, anche se non riesco a trovare i miei widget di testo semplice nella cartella del plugin. Sono nuovo a tutto questo.. dove posso trovarli? Inoltre, qualcuno sa come convertire il nome di una categoria (che funge anche da titolo come parte di un tema) in un link? Grazie in anticipo. Jac

User User
6 mar 2012 08:12:03
Tutte le risposte alla domanda 5
3

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!

29 apr 2011 20:47:02
Commenti

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

Ian Young Ian Young
29 apr 2011 21:47:05

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.

Ian Young Ian Young
30 apr 2011 12:57:20

Hai $this->WP_Widget('recent-posts', __('My Recent News Posts'), $widget_ops); nel costruttore. Dovresti avere $this->WP_Widget('widget_my_recent_entries', __('My Recent News Posts'), $widget_ops);.

EAMann EAMann
30 apr 2011 19:54:54
1

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.

28 apr 2011 15:25:44
Commenti

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?

Ian Young Ian Young
28 apr 2011 16:06:27
0

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/

21 dic 2012 20:17:38
1

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/

3 mar 2012 06:23:25
Commenti

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?

fuxia fuxia
3 mar 2012 11:05:29
1
-1

oppure puoi semplicemente utilizzare un widget di testo normale che permette HTML nei contenuti e lasciare il titolo vuoto, poi aggiungere in cima al contenuto di quel widget...

<a href="yourlink"><div class="widget-title">Your Title</div></a>
30 nov 2012 00:06:58
Commenti

Non proprio la stessa cosa. L'OP vuole collegare il titolo del widget, non qualcosa all'interno del contenuto del widget.

chrisguitarguy chrisguitarguy
30 nov 2012 00:53:46