2011-04-30 3 views
0

J'ai réédité cette question: est-il possible d'avant d'afficher la sortie au point 2 passer une variable à la couleur globale (point 3) comme une variable globale ou quelque chose?WordPress plugin et wp_head

 class myclass 
     { 
      public function init() 
      { 
        global $shortcode_tags; 
         add_shortcode(MYSHORTCODE, array('myclass', 'shortcode')); 
        // * point 1 
        return; 

      } 

      public function shortcode() 
      { 
       // *point2 
      } 

      function globalcolor($color) 


       { 
        echo '<style>body{color:' .$color . '}</style>' . "\n"; 
        // * point 3 
       } 
      } 

add_action('wphead', array('myclass', 'globalcolor')); 

add_action('init', array('myclass', 'init')); 

PS. En ce moment, je lis sur les champs personnalisés. enter code here

Répondre

1

do_action() est appelé par WordPress, vous voulez add_action().

L'action init vient trop tôt. Vous appelez la classe maintenant même pour le backend, pour les requêtes AJAX, etc. Utilisez le hook template_redirect qui est appelé uniquement sur le frontend.

Vous ne pouvez pas envoyer la valeur de couleur comme vous l'avez essayé. Voir l'exemple de code pour un exemple de travail.

Exemple de code:

class My_Plugin { 

    /** 
    * Container for your color value. 
    * @var string 
    */ 
    static $color; 

    public static function init() 
    { 
     // Set the color value as a class member. 
     self::$color = '#345'; 

     // Class methods are addressed with an array of the object or the 
     // class name and the function name. 
     add_action('wp_head', array (__CLASS__, 'print_color')); 
    } 

    public static function print_color() 
    { 
     // In action you have to print/echo to get an output. 
     print '<style>body{color:' . self::$color . '}</style>'; 
    } 
} 
add_action('template_redirect', array ('My_Plugin', 'init')); 

Je recommande fortement https://wordpress.stackexchange.com/ à poser plus de questions sur WordPress. :)

+0

merci, mais je ne suis pas clair du tout, j'ai aussi mis à jour avec mon régime complet. – greenbandit

+0

@greenbandit Voilà une ... nouvelle question complète. ;) Les shortcodes sont analysés ** après ** 'wp_head'. Utilisez un [champ personnalisé] (http://wordpress.stackexchange.com/questions/tagged/custom-field) à la place. – fuxia

+0

@toscho bon point sur shortcode, l'idée principale est d'ajouter une couleur personnalisée et l'arrière-plan via shortcode comme [couleur d'arrière-plan = "# 0066ff" bg = "url"] des idées? – greenbandit