[plugin] functionsCapacitor : hackez le Codex dans vos pages /posts ! (Créer un compte)

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 43)
  • Auteur
    Messages
  • #506343
    oliezekat
    Membre
    Chevalier WordPress
    107 contributions

    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 !

    #819814
    oliezekat
    Membre
    Chevalier WordPress
    107 contributions

    Petite 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 ?

    #819815
    oliezekat
    Membre
    Chevalier WordPress
    107 contributions

    Encore 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_cloud

    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 !

    #819816
    Aphrodite
    Participant
    Maître WordPress
    4750 contributions

    waow… Alors la bravo ! pour du theming avancé ca c’est super. Je vais agader ca 🙂

    #819817
    Guy
    Participant
    Maître WordPress
    14821 contributions
    oliezekat 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?

    #819818
    Lumiere de Lune
    Participant
    Maître WordPress
    19365 contributions
    #819819
    Guy
    Participant
    Maître WordPress
    14821 contributions

    @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.

    #819820
    oliezekat
    Membre
    Chevalier WordPress
    107 contributions

    Guy, 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&param2=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…

    #819821
    Guy
    Participant
    Maître WordPress
    14821 contributions

    Ce 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.

    #819822
    oliezekat
    Membre
    Chevalier WordPress
    107 contributions

    Si 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 ^^

    #819823
    Guy
    Participant
    Maître WordPress
    14821 contributions

    Alors, 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;
    }

    #819824
    oliezekat
    Membre
    Chevalier WordPress
    107 contributions

    Merci 🙂

    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 ?

    #819825
    Guy
    Participant
    Maître WordPress
    14821 contributions

    oula, 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.

    #819826
    oliezekat
    Membre
    Chevalier WordPress
    107 contributions

    Pourquoi ton code fait un eval ? C’est juste pour le cas où c’est un array simple et éviter d’utiliser wp_parse_args ?

    #819827
    Guy
    Participant
    Maître WordPress
    14821 contributions

    non 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=8)
    1 => string ‘category’ (length=8)

    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.

15 sujets de 1 à 15 (sur un total de 43)
  • Le sujet ‘[plugin] functionsCapacitor : hackez le Codex dans vos pages /posts !’ est fermé à de nouvelles réponses.