Cum pot adăuga linkuri în titlurile widget-urilor?

28 apr. 2011, 14:38:28
Vizualizări: 17.8K
Voturi: 5

Folosesc trei widget-uri, două dintre ele sunt widget-uri standard WordPress (Postări Recente și Arhive) iar al treilea este un widget personalizat care funcționează similar cu Postări Recente dar pentru un anumit tip de Postare Personalizată.

Întrebarea mea este cum pot face titlurile widget-urilor să fie linkuri clickabile? Se pare că WordPress nu acceptă HTML în câmpul de titlu și îl elimină automat. Ideal, aș dori să fac acest lucru fără un plugin, deși știu că există soluții precum Linkable Title HTML and PHP Widget. Dar nu este exact ceea ce caut.

Codul pentru widget-ul personalizat pe care îl am până acum poate fi văzut aici: http://pastie.org/1847651

3
Comentarii

Ian, poți include codul pentru widget-ul pe care l-ai creat?

EAMann EAMann
29 apr. 2011 18:44:36

Tocmai am actualizat întrebarea mea cu un link către codul widget-ului. Deși trebuie să adaug linkuri la titlul acestui widget personalizat, aș dori de asemenea să adaug linkuri și la widget-urile implicite 'Postări Recente' și 'Arhivă' dacă este posibil.

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

acest lucru funcționează bine, mulțumesc, dar nu pot găsi widget-urile mele simple de text în folderul plugin-ului. Sunt nou în toate acestea.. unde le pot localiza? De asemenea, știe cineva cum să transforme un nume de categorie (care servește și ca titlu ca parte a unei teme) într-un link? Mulțumesc anticipat. Jac

User User
6 mar. 2012 08:12:03
Toate răspunsurile la întrebare 5
3

Făcând titlul clickabil

WordPress nu permite transmiterea codului HTML în titlul widget-ului, dar are parametrii utili $before_title și $after_title pe care îi poți folosi pentru a manipula lucrurile.

În widget-ul tău, adaugă prima parte a link-ului (<a href="...">) la sfârșitul lui $before_title și ultima parte a link-ului (</a>) la începutul lui $after_title, iar titlul tău va fi automat legat.

Facii asta după ce extragi argumentele în metoda widget() ... deci în codul tău, găsește secțiunea:

ob_start();
extract($args);

$title = apply_filters('widget_title', empty($instance['title']) ? __('Știri Recente ale Personalului') : $instance['title'], $instance, $this->id_base);

Și adaugă:

$before_title .= '<a href="http://something.com">';
$after_title = '</a>' . $after_title;

Și vei avea titlul legat!

Modificarea widget-urilor implicite

Nu poți aplica această metodă direct widget-urilor implicite, dar există o soluție folosind moștenirea obiectelor. Pur și simplu definești propriile widget-uri personalizate care extind widget-urile implicite:

class My_Widget_Recent_Posts extends WP_Widget_Recent_Posts {

}

Va trebui să redefinești numele widget-ului și altele în constructor, apoi să redefinesti metoda widget() copiind ce este deja acolo dar aplicând hack-ul nostru cu $before_title/$after_title de mai sus. Noua versiune a widget-ului implicit va avea titluri clickabile!

29 apr. 2011 20:47:02
Comentarii

Este minunat, exact ce căutam! Am reușit să fac widget-ul meu personalizat de Post Types să funcționeze cu titlul clickabil, dar când vine vorba de extinderea widget-ului implicit Recent Posts, nu sunt încă acolo. Am extins clasa implicită și am înregistrat noul widget, dar nu apare în panoul meu de widget-uri. Codul pe care l-am adăugat în fișierul functions.php este: http://pastie.org/1848212

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

Poți să vezi unde greșesc în extinderea clasei implicite de widget? Am extins clasa, am redenumit widget-ul în constructor și am copiat conținutul din widget-ul implicit Recent Posts. Nu primesc erori, dar nu apare în panoul de Widget-uri. De asemenea, am înregistrat noul widget.

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

Ai $this->WP_Widget('recent-posts', __('My Recent News Posts'), $widget_ops); în constructor. Ar trebui să ai $this->WP_Widget('widget_my_recent_entries', __('My Recent News Posts'), $widget_ops);.

EAMann EAMann
30 apr. 2011 19:54:54
1

Dacă widget-urile implicite nu oferă funcționalitatea pe care o căutați, în special permisiunea de a adăuga link-uri personalizate pe titluri, cel mai bine ar fi să vă creați propriile widget-uri.

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/

De obicei, acest lucru presupune scrierea unui plugin care adaugă widget-uri personalizate în ecranul de widget-uri. A face o mică modificare la un widget existent este la fel de simplu ca a copia codul original și a-l include într-un mod modificat într-un plugin.

Widget-urile implicite se găsesc în wp-includes/default-widgets.php

Editare Dacă nu sunteți familiarizat cu codul WordPress, trebuie să decideți dacă doriți să vă familiarizați mai mult. Dacă da, trebuie să adăugați un câmp în formularul widget-ului care să permită utilizatorului să introducă adresa link-ului și să editați codul widget-ului pentru a insera link-ul când codul widget-ului afișează titlul.

Dacă nu doriți să vă familiarizați, atunci cred că nu aveți noroc. Widget-urile nu vin cu capacitatea de a-și modifica capacitățile fără a modifica codul WordPress.

28 apr. 2011 15:25:44
Comentarii

Am creat un widget după acest exemplu, dar nu sunt suficient de familiarizat cu codul WordPress pentru a ști cum să-l modific pentru a avea un titlu pe care se poate face clic. Aveți sugestii?

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

Tocmai am lansat un plugin care permite oricui să adauge un link în setările widget-urilor. Funcționează cu majoritatea plugin-urilor. Obține-l aici: http://wordpress.org/extend/plugins/widget-title-links/

21 dec. 2012 20:17:38
1

De fapt, POȚI introduce HTML direct în antet. Cu puțin cod suplimentar. Consultă acest articol care îți arată cum:

http://ponderwell.net/2011/05/how-to-use-html-in-wordpresss-widgets-title/

3 mar. 2012 06:23:25
Comentarii

Bine ați venit pe WordPress Stack Exchange, Alfred! Avem un FAQ util aici: Un răspuns ar trebui să fie mai mult decât doar puțin mai mult decât un link către un site extern. Ai putea adăuga o explicație de bază la răspunsul tău?

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

sau poți folosi pur și simplu un widget de text simplu care permite HTML în conținut și lasă titlul gol, apoi adaugă la începutul conținutului acelui widget...

<a href="yourlink"><div class="widget-title">Titlul Tău</div></a>
30 nov. 2012 00:06:58
Comentarii

Nu chiar același lucru. OP dorește să lege titlul widget-ului, nu orice din conținutul widget-ului.

chrisguitarguy chrisguitarguy
30 nov. 2012 00:53:46