私が作成しているすべてのカスタムウィジェットの中でモバイルウィジェットとデスクトップウィジェットのための手段を提供しているので、私はそれができるようにバックエンドのウィジェット領域のタイトルでウィジェットがモバイル/デスクトップであるかどうかを示すのは良い考えだと思いますこのセクションをよりユーザーフレンドリーにするのに役立ちます。
どのアクティブウィジェットがデスクトップでどのアクティブウィジェットがデスクトップであるかを識別できるように、モバイル/デスクトップアイコンを含めるために、ウィジェットのタイトルバー内(ウィジェットタイトルの左側)に画像をロードするために使用できるフィルタはありますか?モバイル、それのオプションで見るためにウィジェットを開く必要なしに?
これをバックエンドのadmin widgets.php
ページでのみキャプチャするためのワードプレスのどこかにフックがありますか?ページをロードするときにphpフックを使用したいです。モバイルからデスクトップへ、またはその逆にオプションが変わる場合には、すでにjQueryを使用しています。これを行う必要があるのは、ウィジェットページの初期ロードです。
可能?
以下の例は、可能であれば、WP_Widgetsクラスファイル内および拡張されたWP_Widgetsクラスファイルから簡単に最初のwidgets.phpページをロードできるようにするためのものですか。またはフィルタ、アクションなど.
だから、私はWP_Widgetを拡張するWidgetクラスの中で次のようにしてやってみました:
function __construct() {
parent::__construct(
'social_media_widget',
__('Social Media Widget', 'mydomain')
);
add_filter('dynamic_sidebar_params', array($this, 'my_sidebar_params'), 10, 1);
}
function my_sidebar_params($params) {
$sidebar_id = $params[0]['id'];
if (is_admin() && $params[0]['widget_name'] == 'Social Media Widget')
{
$_widget = get_option('widget_social_media_widget');
if (!empty($_widget) && isset($_widget[$params[1]['number']]))
{
// $platform is being set in here as "desktop" because if I do a var_dump, it gives me "desktop", however, the image is not showing in the titlebar using before_title below... why?
$platform = isset($_widget[$params[1]['number']]['platform']) ? $_widget[$params[1]['number']]['platform'] : '';
}
if (!empty($platform))
{
$params[0]['before_title'] = '<img src="' . get_stylesheet_directory_uri() . '/img/' . $platform . '-icon.png" alt="' . $platform . ' menu" class="menu-icon ' . $platform . '-icon" />';
}
}
return $params;
}
そのため、$ platformが正しい値になりましたが、admin Widgets領域のタイトルバーのタイトルの前に画像が添付されていません。
私はあなたが$params = apply_filters( 'dynamic_sidebar_params', $params );
を探していると思います(ここを見てください: https://github.com/WordPress/Word/master/wp-includes/widgets.php#L706 ).
今このフィルタはフロントエンドとバックエンドの両方で評価されます。だからあなたの質問に答えるために、あなたはif( is_admin() ){ // Do icons }
チェックであなたのフィルタをラップすることができます。
さらに良いことに、あなたはあなたのregister_sidebar( $args )
関数で登録レベルでこれを定義することができます。関数の定義については 236行目 を、カスタマイズする必要がある実際の引数については Line 250 を調べてください。コンディション。このようなもの
$before_title = is_admin() ? '<span class="custom-icon"></span><h2 class="widgettitle">' : '<h2 class="widgettitle">';
$args = array(
// ... your custom args definition
'before_title' => $before_title,
);
register_sidebar( $args );
UPDATE
コードをさらに深く掘り下げた後、私の答えはいくつかの理由であなたのニーズに合いません。