- Statut : non résolu
- Ce sujet contient 42 réponses, 5 participants et a été mis à jour pour la dernière fois par Lumiere de Lune, le il y a 9 années et 8 mois.
-
AuteurMessages
-
28 février 2012 à 17 h 12 min #506343
Bonjour, je vous présente mon nouveau projet ;
Le plugin functionsCapacitor permet d’appeler dans le contenu de vos pages et articles des API de WordPress via un tag, les champs personnalisés, ou un widget.
http://wordpress.org/extend/plugins/functionscapacitor/Concrètement, avec les fonctions qui sont déjà supportées vous n’avez plus besoin d’autres plugins, ou de créer des templates de pages pour faire ;
– L’arborescence des pages, insérez [fct wp_list_pages= »title_li= »]
– L’arborescence des catégories, insérez [fct wp_list_categories= »title_li= »]
– La liste des archives, insérez [fct wp_get_archives= » »]
– La liste des liens, insérez [fct wp_list_bookmarks= »title_li= »]En jouant avec les paramètres des fonctions (tel que définis dans le Codex), vous pouvez ;
– Afficher la liste des pages enfants d’une page, insérez [fct wp_list_pages= »title_li=&child_of=%postID%&depth=1″]
Et plein d’autres choses de votre imagination…
Avec votre aide pour suggérer/implémenter d’autres fonctions du Codex, ce plugin pourrait devenir le couteau-suisse de la communauté WordPress !
En effet, par sécurité, le plugin ne permet pas d’exécuter n’importe quel fonction, et beaucoup de fonctions ne renvoient pas un contenu immédiatement affichable (càd en HTML). Il y a donc un très gros, et perpétuel, travail de développement à accomplir…
NB:
je planche déjà pour implémenter get_posts() et un système de widget.Fait !28 février 2012 à 23 h 52 min #819814Petite mise à jour, version 0.2, surtout pour corriger un bug dans le traitement des arguments pour une fonction via un tag.
Et au passage, ajout du support de la fonction wp_nav_menu().Personne n’a une idée de lame, coupe ongle, ou tire-bouchon à ajouter au couteau-suisse ?
29 février 2012 à 22 h 48 min #819815Encore une petite mise-à-jour pour ajouter le support de wp_tag_cloud().
Pour insérer un nuage proportionné de tous vos tags, insérez dans le contenu d’une page la balise
[fct wp_tag_cloud= »number=0″]Consultez les options proposées par le Codex pour adapter la bête à vos souhaits :
http://codex.wordpress.org/Function_Reference/wp_tag_cloudAnecdote: ca devrait grandement aider l’ami @FlorianL de filmgeek.fr qui se tue à la tâche à éditer à la main sa page des Tags, quel courage !
1 mars 2012 à 9 h 15 min #819816waow… Alors la bravo ! pour du theming avancé ca c’est super. Je vais agader ca 🙂
1 mars 2012 à 10 h 51 min #819817oliezekat wrote:Anecdote: ca devrait grandement aider l’ami @FlorianL de filmgeek.fr qui se tue à la tâche à éditer à la main sa page des Tags, quel courage !Il fait ses tags à la main!!!! c’est pas possible 🙂
sinon, comment on fait pour avoir à la fois ses tags et une taxonomie ou plus simplement ses tags et ses catégories?
1 mars 2012 à 12 h 33 min #819818Post types / taxonomies intersections (http://wordpress.org/extend/plugins/post-types-taxonomies-intersections/)
1 mars 2012 à 12 h 42 min #819819@lumiere: a priori, je n’ai pas trop de problèmes pour trouver l’intersection d’un truc avec un autre 🙂, je faisais juste remarquer que le plugin functionsCapacitor dans sa version actuelle ne permet pas de gérer les paramètres des fonctions de l’API sous forme d’array.
1 mars 2012 à 18 h 46 min #819820Guy, je comprends pas la question
A noter que si pour une fonction de l’API si les arguments doivent être dans un tableau, mon plugin converti la methode old-scholl des param1=value¶m2=value en array.
Par contre, si le value doit être un array, j’ai pas encore trouvé/décidé comment gérer celà.
Dans le cas de wp_tag_cloud(), j’peux proposer dé résoudre par « taxonomy=post_tag,category » si tu peux me confirmer que le nom-slug d’une taxonomie comporte jamais de virgule…
1 mars 2012 à 20 h 36 min #819821Ce que je voulais dire, c’est que lorsque dans l’API, la valeur attendue est un array, le plugin ne le gère pas encore et je ne sais pas si c’est une bonne solution de le contourner en ajoutant un traitement particulier pour ces cas là.
J’avais été confronté à cette problématique, car je voulais pouvoir lancer des fonctions perso par un shortcode un peu générique en ayant la possibilité de passer des paramètres soit en array soit en string avec & à la mode WordPress.
Un des effets secondaires non voulu au départ, a été que je pouvais aussi appeler les fonctions de WordPress proposant une sortie HTML (sous forme de chaine) comme tu le fais dans ton extension.
La fonction ne prend que quelques lignes car il n’y a pas de contrôle ni sur les noms des fonctions acceptées ni sur les valeurs des paramètres. La sécurité n’était pas la préoccupation première car c’était un développement interne.1 mars 2012 à 21 h 00 min #819822Si j’hésite à un traitement au cas par cas (par fonction et parametre) ou de reconnaitre en générique des value comme array(a,b,c) par contre les array associatifs seraient trop compliqué à gérer sans risque.
Et puis c’est un couteau-suisse, pas une tronçonneuse ^^
1 mars 2012 à 21 h 30 min #819823Alors, tu peux donc faire un ajout au codex pour ces cas là (et le mettre dans une doc bien visible). Cela fait quand même un peu lourd
J’ai regardé ton source, il faudra que tu fasses l’appel à wp_tag_cloud avec des arguments en array sinon cela ne marchera pas, actuellement tu le transformes en chaine.
D’autre part, j’ai vu aussi que tu cherches explicitement ‘&’ pour le remplacer par ‘&’, je ne suis pas certain que selon les codages tu ais toujours ‘&’.j’avais fait ça pour info
exemple d’usage:[fctnexec wp_tag_cloud= »array(‘echo’ => false, ‘taxonomy’=>array(‘post_tag’,’category’),) »]
[fctnexec wp_tag_cloud= »taxonomy=category&echo=0″]add_shortcode(‘fctnexec’, ‘gmrfctn_exec’);
function gmrfctn_exec($atts)
{
$ret = « »;
foreach ($atts as $func => $_args)
{
$args = »;
if ( is_string($func)) {
$args = html_entity_decode($_args);
eval( ‘$args = ‘.$args.’;’);
if (!is_array($args)) $args = wp_parse_args($args);
}
else $func = $_args;
$ret .= call_user_func($func, $args);
}
return $ret;
}1 mars 2012 à 23 h 22 min #819824Merci 🙂
Pour les &, je vérifie au préalable que l’éditeur les a pas convertit en entités HTML.
Le souci avec wp_parse_args(), c’est que j’ai aussi besoin de la fonction inverse et que je la trouve pas A moins qu’il soit certain que les fonctions qui prennent des args comme une string accepteront toujours une version array…
Edit: et on sait pas à quel version de WP la fonction wp_parse_args() est apparu. Avant la 2.5 ?
2 mars 2012 à 3 h 54 min #819825oula, je n’ai pas dit que cela résoudrait tous tes problèmes 🙂 c’est uniquement ce que j’avais fait dans un cas bien particulier, les fonctions avec arguments Array/string ou sans arguments.
– je n’ai pas vu que tu faisais une vérification des entités HTML
– Si tu as une version de WordPress antérieure à la création de la fonction wp_parse_args, je te conseille de faire tout de suite une mise à jour, il ne doit pas y avoir grand chose qui fonctionne encore 🙂 sinon, c’était 2.2.0 selon les sources.2 mars 2012 à 15 h 55 min #819826Pourquoi ton code fait un eval ? C’est juste pour le cas où c’est un array simple et éviter d’utiliser wp_parse_args ?
2 mars 2012 à 17 h 13 min #819827non c’est pour créer une variable à partir d’une chaine, wp_parse_args ne contrôle pas le contenu mais uniquement le type chaine ou tableau de l’argument qui lui est passé.
chaine de départ : array(‘taxonomy’=> array(‘post_tag’,’category’))
résultat var_dump avec wp_parse_args:
array
‘array(‘taxonomy » => string ‘>array(‘post_tag’,’category’))’ (length=31)résultat avec eval:
array
‘taxonomy’ =>
array
0 => string ‘post_tag’ (length=
1 => string ‘category’ (length=D’autre part, si tu veux étendre et accepter tout type d’argument (du genre appeler get_the_date= »d/m/Y »), tu peux enlever le if (!is_array($args)) $args = wp_parse_args($args);
Pour améliorer, il faudrait aussi l’encadrer dans un ob_start/ ob_get_contents.
-
AuteurMessages
- Le sujet ‘[plugin] functionsCapacitor : hackez le Codex dans vos pages /posts !’ est fermé à de nouvelles réponses.