2017-08-26 4 views
-1

Je souhaite créer un plugin/widget WordPress que je peux ajouter à mon message via la zone Visual Composer (le widget doit être sélectionnable) ou simplement en tant que shortcode.Comment créer un widget wordpress basé sur les paramètres de publication

La fonctionnalité de ce widget est qu'il devrait me permettre de prendre les paramètres de ce post comme un argument dans la fonction principale afin que je puisse changer la sortie du widget en fonction de ce qui est sélectionné pour la publication.

Par exemple, j'ai des catégories pour tous mes messages et si j'ai une certaine catégorie sélectionnée, je veux changer la sortie du widget en fonction de cela.

Est-ce que quelqu'un sait d'un bon passe-partout pour commencer avec moi?

Merci

Répondre

1

Vous pouvez créer votre propre widget en utilisant le Widget API ou Shortcode API pour shortcodes. Puisque vous voulez changer le contenu affiché dans votre widget, par exemple, basé sur la publication actuelle, dans la méthode widget() (qui est la méthode qui imprime le contenu de votre widget dans le frontend), vous pouvez ajouter vos conditions ou tout ce que vous voulez imprimer là-bas.

Le $post est disponible dans votre widget, vous pouvez utiliser des fonctions comme get_post_meta() pour récupérer les paramètres du poste si vous utilisez des champs personnalisés, ou toute autre fonction comme get_the_ID() ou has_category().

Par exemple:

/** 
* Outputs the content of the widget 
* 
* @param array $args 
* @param array $instance 
*/ 
public function widget($args, $instance) { 
    if (has_category('books')) { 
     echo 'Hey!, I have the Books category!'; 
    } else { 
     echo "Hey... I don't."; 
    } 
} 
+0

Merci beaucoup pour votre réponse. Cela m'a aidé à obtenir la réponse dont j'avais besoin. Dans la fonction shortcode, j'ai pu utiliser 'get_post()' qui m'a renvoyé toutes mes données postales ainsi que 'wp_get_object_terms ($ id, 'portfolio_categories')' qui m'a aidé à obtenir la liste des catégories pour mon post. Merci! – Justin