私はこれを2つの方法のうちの1つにしてみました:
クラスの
form
メソッド(拡張) には、グローバルな JavaScript 変数を設定する次のスニペットがあります。Widget
WP_Widget
if( $instance ) : ?> <script type="text/javascript"> window.widget_order_name = "<?php echo $this->get_field_name( 'order' ) ?>"; </script> <?php endif;
ウィジェット管理マークアップでは、次の html 構造も作成しようとしました。
<div field_name='<?php echo $this->get_field_name( 'order' ) ?>' id='order_field_name' class='hidden'> </div>
ウィジェット管理 JavaScript ファイルで、この field_name の値を 2 つの方法のいずれかで取得し (以下を参照)、そのウィジェット名を非表示の入力フィールド (保存したい値を含む) の名前にアタッチします。
を使用した最初の方法
window.widget_order_name
:var widget_field_name = window.widget_order_name;
2 番目の方法は、次のもの
jQuery
を取得するために使用しfield_name
ます。var widget_field_name = $( '#order_field_name' ).attr( 'field_name' );
私の問題:
ウィジェットを Available Widgets コンテナからサイドバーに最初に移動するときはいつでも、実際のフィールド名を取得するのではなく、代わりにフィールド名の一種のプレースホルダーを取得します。
したがって、次のようなものを取得する代わりに:
<input
type="hidden"
name="widget-hours-widget[2][order][]"
value="L48">
私はこれを得る:
<input
type="hidden"
name="widget-hours-widget[__i__][order][]"
value="L26">
保存ボタンをクリックすると、プレースホルダーではなくfield_name
、ウィジェットの正しい名前が表示されます。widget-hours-widget[2]
widget-hours-widget[__i__]
誰かが同様の問題に遭遇したか、それを修正する方法を知っていますか?
ありがとう。