Wordpress での私の目標は、サイドバーに配置したすべてのウィジェットにカスタム クラスを提供できるようにすることです。できれば、各ウィジェットのウィジェット設定にこのクラスを追加したいと思います。サードパーティのウィジェットも。
クラス名は既にregister_sidebar関数 (%2$s)に渡されているため、クラス名を変更することを考えていました。
<?php
register_sidebar(array('before_widget' => '<aside id="%1$s" class="widget %2$s blue">'));
?>
もちろん、WP のコア コードやサードパーティのプラグインを変更するべきではありません。これは、ウィジェット構成プロセスにフックするプラグインを作成する必要があることを意味します。
アクション「in_widget_form」にフックすることで、すべてのウィジェットフォームを変更できることがすでにわかりました。
<?php
add_action('in_widget_form', 'teaserWidgetAddToForm');
function teaserWidgetAddToForm($widget_instance) {
?>
<label for="<?php echo $widget_instance->get_field_id('teaser-classname'); ?>">Custom classname(s):</label>
<input type="text" id="<?php echo $widget_instance->get_field_id('teaser-classname'); ?>" name="<?php echo $widget_instance->get_field_name('teaser-classname'); ?>">
<?php
}
?>
このデータは Widget スーパークラスによって保存される必要がありますが、このデータを取得するにはどうすればよいですか (そのため、後でウィジェット設定を開くと、以前に入力した内容が表示されます)
そして、この保存されたデータはウィジェット インスタンスに配置する必要があります。これはどのように行われますか? 次のようなものを使用して推測します:
<?php
$wp_registered_widgets[<widget_id>]['callback'][0]['widget_options']['classname'] = <chosen_class>;
?>
だから基本的に私は2つの質問があります:
- この問題に対処するために適切な方法を使用していますか (個々のウィジェットのスタイリング)
- その場合、Wordpress またはサードパーティのプラグインのソース コードを変更せずに、ウィジェット インスタンスを変更して追加の設定を保存および取得するにはどうすればよいですか。