插件开发:函数问题

时间:2011-05-02 作者:greenbandit

我有一个非常基本的方案来构建我的第一个插件,但现在我有一个问题:当我在点1上放置一个钩子来添加\\u操作时,效果很好,但我需要从shortcode函数中获取颜色,因此,当我在点2放置代码时,效果不好。

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

             }

             public function shortcode( )
             {
                 // want to run add_action here
                             // i need to get the color from shortcode that part is done
                             // question is how i can run add_action from here and pass
                             // the variable to function globalcolor (point 3), then run it in wp_head?
                             // * point 2
             } 

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

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


the code to add: add_action( \'wp_head\', array( \'myclass\', \'globalcolor\' ) );
有什么想法吗?对不起,我的英语不好。

1 个回复
最合适的回答,由SO网友:Geert 整理而成

主要问题是您使用的是静态callbacks 而您应该传递对象,以便可以访问类属性。

您可以这样启动初始化:

class Myclass {

  public function __construct() {
    // Object method call, instead of a static one
    add_action(\'init\', array($this, \'init\'));
  }

  public function init() {
    // add_shortcode(...);
  }

}

// Trigger constructor
new Myclass;
另一方面,在<head>, 您可能更喜欢自定义body类。过滤器body_class 可用于此(related example).

结束

相关推荐

write in functions.php

我只想在我的函数中添加此代码。php,以便在我的帖子结束后直接显示。目前,我正在将此代码添加到我的单篇文章中。php,但我想在函数中添加它。php,此代码用于获取各个帐户的所有推文,代码如下<?php function parse_twitter_feed($feed, $prefix, $tweetprefix, $tweetsuffix, $suffix) { $feed = str_replace(\"&lt;\", \"<\", $feed);