WordPress插件和wp_head

时间:2011-04-30 20:20:23

标签: wordpress plugins

我已经重新编辑了这个问题:可以在显示第2点的输出之前将变量传递给全局颜色(第3点),就像全局变量一样吗?

        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。现在我正在阅读自定义字段。enter code here

1 个答案:

答案 0 :(得分:1)

WordPress调用

do_action(),您需要add_action()

行动init太早了。您现在甚至为后端,AJAX请求等调用该类。使用仅在前端调用的钩子template_redirect

您无法以您尝试的方式发送颜色值。有关工作示例,请参阅示例代码。

示例代码:

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' ) );

我强烈建议https://wordpress.stackexchange.com/在WordPress上提出更多问题。 :)