Est-ce que les widgets WordPress (ou sidebar) existent?
Je suis en train de filtrer TOUS les widget de sortie par l'intermédiaire d'un filtre simple, mais ne peut pas trouver tous les crochets et a été l'espoir d'être pointé dans la bonne direction. Ou, éventuellement, mes efforts ne sont même pas possible?
Mon filtre simple est quelque chose comme ceci:
function clean_widget_output( $input ) {
return str_replace( array( "\t", "\n", "\r" ), '', $input );
}
add_[FILTER OR ACTION]( 'need_a_hook', 'clean_widget_output', 99 );
Des idées? Je suis assez nouveau à PHP, mais je peux me déplacer.
source d'informationauteur Jeff
Vous devez vous connecter pour publier un commentaire.
Ce est née du besoin/désir de nettoyer le dieu terrible HTML vomie par WordPress widgets. J'adore ce qu'ils font, mais certains de la sortie me fait pleurer.
La réponse courte est
output buffering
parce que je ne pouvais pas trouver n'importe quel widget ou la barre latérale crochets.La réponse longue est:
Alors appel
echo tidy_sidebar( 'sidebar-name-or-id' );
de votre thème.J'ai eu un problème similaire, et après en regardant à travers Adam Brown liste de tous les WordPress filtre crochetsa constaté que le crochet j'avais besoin n'existe pas (
widget_title
comme pxl mentions), mais qu'il n'y a pas de crochet pour obtenir tous les widget de sortie. Je pensais avoir des précisions sur la solution qui a fonctionné pour moi.Théoriquement, le
widget_title
crochet doit affecter tous les widgets sur votre blog, mais je suis sûr que quelques-3e partie widgets négliger d'inclure le nécessaire de ligne de code pour appliquer le titre de filtres, de sorte qu'il n'est pas infaillible. Il a travaillé pour moi, cependant, et il peut être utilisé pour appliquer la coutume 'shortcode (plus précisément, dans ce cas, 'longcode") ou de syntaxes pour votre widget titres. Pour exemple, j'ai voulu, à l'occasion d'inclure du code html dans mon widget titres, mais par défaut, tout le code html est supprimé. Donc, afin d'être en mesure d'ajouter des choses comme<em>
balises de texte dans certains de mes titres, j'ai choisi une syntaxe personnalisés:[[
au lieu de<
&]]
au lieu de>
(par ex,[[em]]
et[[/em]]
) et a ensuite créé une fonction dans mon thème functions.php fichier de processus que la coutume de la syntaxe et de la remplacer par l'équivalent html:Puis j'ai ajouté une ligne au-dessous de lui ajouter la fonction comme un filtre:
La
add_filter
/apply_filter
fonctionnalités passe automatiquement le contenu filtré comme premier paramètre de la fonction spécifiée comme le filtre, c'est tout ce que vous devez faire.Afin de faire quelque chose de similaire pour la sortie principale du widget, vous avez besoin de regarder toutes vos widgets pour voir ce que le crochet d'utiliser et de vérifier qu'ils ont un filtre pour leur sortie principale, que l'utilisation
add_filter()
pour chaque crochet, vous trouverez votre propre fonction de rappel (par exemple, il estwidget_text
pour le widget Texte de sortie, ouget_search_form
pour le formulaire de recherche [vous pouvez le voir dans wp-includes/general-template.php auget_search_form()
fonction]). Le problème est que certains de l'généré dynamiquement les widgets n'ont pas de crochets (comme la Méta widget), qui est pourquoi le tampon de sortie de la solution de Jeff fournit est le plus polyvalent, si pas l'idéal, solution.il y a beaucoup de crochets pour wordpress widgets qui ne sont pas documentés. Le codex wordpress ne pas en faire la liste, pour n'importe quelle raison (comme ces crochets peuvent changer dans le futur, et à rompre de façon inattendue avec de nouvelles mises à jour et versions)... donc les utiliser avec une extrême prudence.
pour savoir ce qu'ils sont, il y a au moins 2 endroits à regarder:
contenues dans ces deux fichiers est une assez bonne liste de tous les hooks de wordpress utilise.
Un exemple serait un filtre pour les widgets est
widget_title
encore une fois, utiliser avec précaution, ils ne sont pas garantis de travailler au-delà de la version spécifique du code que vous cherchez.
Je ne suis pas sûr quand ils ont introduit le widget_text filtre, peut-être qu'ils n'ont pas dans '09 lorsque cette question a été à l'origine posée, mais depuis qu'il est là maintenant, et pour le bien de toute personne qui obtient cette stackoverflow comme je l'ai fait à partir de google et arrive juste à lire assez loin vers le bas pour voir cette réponse, il est en fait assez simple:
Aussi peut-être de vérifier la dynamic_sidebar_params filtre --
Un autre lien --