5

私はこれを2つの方法のうちの1つにしてみました:

  1. クラスのformメソッド(拡張) には、グローバルな JavaScript 変数を設定する次のスニペットがあります。WidgetWP_Widget

    if( $instance ) :
    ?>
        <script type="text/javascript">
            window.widget_order_name = "<?php echo $this->get_field_name( 'order' ) ?>";
        </script>
    <?php
    endif;
    
  2. ウィジェット管理マークアップでは、次の html 構造も作成しようとしました。

    <div
      field_name='<?php echo $this->get_field_name( 'order' ) ?>'
      id='order_field_name'
      class='hidden'>
    </div>
    

ウィジェット管理 JavaScript ファイルで、この field_name の値を 2 つの方法のいずれかで取得し (以下を参照)、そのウィジェット名を非表示の入力フィールド (保存したい値を含む) の名前にアタッチします。

  1. を使用した最初の方法window.widget_order_name

    var widget_field_name = window.widget_order_name;
    
  2. 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__]

誰かが同様の問題に遭遇したか、それを修正する方法を知っていますか?

ありがとう。

4

1 に答える 1