我正在运行WordPress 3.1.3,并希望创建一个侧栏小部件,或多或少倒计时到一个重复的事件。我已经为倒计时的底层PHP代码工作了一个独立的脚本,但是我遇到麻烦的实际上是“小部件化”代码,因为它包含对其他函数的引用。 < / p>
这是我所拥有的一个提炼版本(不包括所需的插件标题,等。):
add_action("widgets_init", array('LMC_countdown', 'register'));
class LMC_countdown extends WP_Widget {
function control(){
echo "This widget doesn't need a control panel in WordPress right now.";
# In all likelihood, that'll be a separate issue for later. :)
}
function widget($args){
echo $args['before_widget'];
# //////////////////// BEGIN MAIN WIDGET FUNCTION ////////////////////
$year = date("Y",$today);
echo "<div id=\"sidebar-countdown\">";
/* ...
quite a bit of additional PHP logic here, but boils down to:
*/
echo countdownTo(findEventStart($year));
echo "</div>";
# //////////////////// END MAIN WIDGET FUNCTION ////////////////////
echo $args['after_widget'];
}
function register(){
register_sidebar_widget('LMC Countdown', array('LMC_countdown', 'widget'));
register_widget_control('LMC Countdown', array('LMC_countdown', 'control'));
}
} # end class LMC_countdown
问题当然是countdownTo()
和findEventStart()
是自定义函数,它们“支持”主要的小部件操作,它们本身称之为其他一些“支持功能”。无论我在哪里尝试使用这些支持函数 - 无论是在register()
之后的类中还是在widget()
函数本身之内 - 我都会遇到错误,因为第一个函数未定义。
我从教程和“Hello world”示例中获得了我的大部分结构代码,但没有一个足够强大,可以将PHP函数嵌入其中。那么我应该在哪里放置这些“支持功能”,我应该如何在小部件中调用它们? 提前感谢您的帮助。
答案 0 :(得分:3)
将这两个函数放在类下面。然后他们也可以在课堂上找到。
...
}
} # end class LMC_countdown
function countdownTo() {
...
您已经为它们编写了全局函数,因此它们属于类外。它们可用于您的小部件和任何其他插件/脚本。因此,最好使用LMC_
为其名称添加前缀。
你可以做的另一种方法是将它们添加到课堂中。所有类的函数都可以通过类中的$this
访问:
class LMC_countdown extends WP_Widget {
# private functions
private function countdownTo() {
...
}
private function findEventStart($year) {
...
}
...
# wp widget functions
function widget($args){
...
echo $this->countdownTo($this->findEventStart($year));
...
}
...
}