【发布时间】:2011-06-21 00:11:29
【问题描述】:
我正在运行 WordPress 3.1.3,并希望创建一个侧边栏小部件,或多或少 可以倒计时到重复发生的事件。我有用于倒计时的底层 PHP 代码在一个独立的脚本中工作,但我遇到问题的地方实际上是“小部件化”代码,因为它包含对其他函数的引用。
这是我所拥有的内容的提炼版本(不包括所需的插件标题,等):
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 函数。那么我应该把这些“支持功能”放在哪里,我应该如何在小部件中调用它们? 提前感谢您的帮助。
【问题讨论】:
标签: php oop wordpress class widget