0

WP_Widget の子ウィジェットを拡張するウィジェットの作成について話しています。

これを参照として使用: https://wordpress.stackexchange.com/questions/101438/how-to-extend-a-wp-widget-twice

例:

My_WidgetBaseWP_Widgetを拡張します

My_WidgetMy_WidgetBaseを拡張します

My_Widgetを他のウィジェットと一緒に表示する方法を知りたいです(現在はありません)。My_WidgetBaseが機能するようになりました。

これは私のフレームワークにとって重要です。widget()、update()、および form() をオーバーライドする必要があることは理解していますが、WP_Widget の孫を作成することについてはどこにも見つかりませんでした。

例:

class My_WidgetBase extends WP_Widget {

    public function __construct($id = 'my-widget-base', $desc = 'My WidgetBase', $opts = array()) {
        $widget_ops = array();
        parent::__construct( $id, $desc, $widget_ops );
    }

    public function widget( $args, $instance ) {
        die('function WP_Widget::widget() must be over-ridden in a sub-class.');
    }


    public function update( $new_instance, $old_instance ) {
        return $new_instance;
    }


    public function form( $instance ) {
        echo '<p class="no-options-widget">' . __('There are no options for this widget.') . '</p>';
        return 'noform';
    }

}

    function RegisterMyWidgets() {
        register_widget('My_WidgetBase');
    }

add_action( 'widgets_init', 'RegisterMyWidgets' );
4

1 に答える 1

0

このスレッドをさらに掘り下げて解決しました: https://wordpress.stackexchange.com/questions/101438/how-to-extend-a-wp-widget-twice

問題は、クラスの実装にあるのではなく、フレームワークに親をどのように含めたかにありました。私は同じphpファイルで子と孫の両方を扱っていませんでしたが、異なるディレクトリを持つ2つの別々のファイルを扱っていました。

この問題を解決するには、孫クラスのディレクトリで require_once() を正しく使用する必要がありました。

于 2016-02-26T17:10:28.393 に答える