WordPress 3.1.3を実行していて、より多くのまたはより少ないが繰り返しイベントにカウントダウンするサイドバーウィジェットを作成しようとしています。私はスタンドアロンのスクリプトで作業するカウントダウンの基礎となるPHPコードを持っていますが、実際にコードをウィジェット化しているのは、他の関数への参照を含んでいるからです。WordPressウィジェット内の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関数をそれらの中に入れておくのに十分な堅牢性はありません。だから私はこれらの "サポート機能"を置くべきですか、どのように私はウィジェット内でそれらを呼び出す必要がありますか? ご協力いただきありがとうございます。
は、どのように私は、彼らが完全に 'LMC_countdown'クラス内に存在していること、これらの関数は、非グローバルな作りに行きますか? –
それはうまくいく。それらをクラス関数として追加し、 '$ this-> countdownTo()'のように '$ this'でアクセスしてください。しかし、クラスの別の関数の内部に置かないでください。クラスの初めに。 – hakre
@Tim Parent:自分のクラス関数の例とその呼び出し方法を追加しました。 – hakre