質問: false;} $(owlcontainer).owlcarousel({ autoplay: settingobj.autoscroll, }); }); これが機能しない理由はわかっていますが、最善の解決策がわからない、wp_localize_scriptの 'carouselvars'ハンドルが一意の名前なしで呼び出されているため、変数が2回呼び出されています。どんな解決策でも大歓迎です。敬具
回答: 私はjqueryの専門家ではありませんが、私は同じ問題に遭遇し、私は実行可能な解決策を持っていると思います。問題は、wp_localize_scriptを実行するたびに、$ name設定を使用してjavascript変数を作成することです。あなたの場合、それは「カルーセルバー」です。これは実行中のjqueryの前に設定されるので、変数に渡された最後の値だけがjqueryによって「見られる」ので、あなたの場合も、settingobj.autoscrollは常にショートコードの最後のインスタンスで設定された値になります。 。私の解決策は、wp_localize_script呼び出しに動的変数名を設定することです。wp_localize_script('owlcarouselcustom', 'carouselvars' . $instance, array( 'autoscroll' => $autoscroll ) ); $ instanceは、ユーザーが設定したいものなら何でも構いません。そのため、使い方は次のようになります。[recent_products_slider instance=1 autoscroll=0] [recent_products_slider instance=2 autoscroll=1] 設定を抽出するためのコードは次のようになります。extract(shortcode_atts(array( 'title' => 'recent products', 'order' => 'desc', 'orderby' => 'date', 'mousewheel' => 'false', 'autoscroll' => '1', 'swipe' => 'false', 'scroll' => '1', 'items' => 6, 'instance' => 1 ), $atts)); もっと賢い方法があると確信しているので、インスタンスを設定する必要はありませんが、私が言ったように、私はjqueryのエキスパートではありません。次に、正しいデータを取得してショートコードの正しいインスタンスに取り込むことがトリックです。私はhtml5データ型を使ってそれをしました。だからあなたのコードのphp部分で私はこれを行うのが最善だと思います:<div id="owl-' . $instance . '" class="owl-carousel" data-instance="' . $instance . '"> それならあなたのjqueryはこのようになるでしょう:jquery(document).ready(function($) { $('.owl-carousel').each(function( index ) { var instance = $( this ).data('instance'); setowlcarousel(instance); }); }); function setowlcarousel(instance) { var settingobj = window["carouselvars"+instance]; var owlcontainer = $("#owl-" + instance); if(settingobj.autoscroll == 1) {settingobj.autoscroll = true;} else {settingobj.autoscroll = false;} jquery(owlcontainer).owlcarousel({ autoplay: settingobj.autoscroll, }); }); } そのため、このjqueryスクリプトは '.owl-carousel'の各インスタンスをループ処理し、そのインスタンスに対してsetowlcarousel関数を実行します。 settingobjを設定するときにウィンドウオブジェクトを呼び出すと、wp_localize_scriptを使用して設定した変数に "carouselvars" +インスタンスを評価できます。この例では、carouselvars1とcarouselvars2です。誰かがこれを実行するためのよりクリーンな方法を持っているなら、私はそれを使用したいと思いますが、これはあなたが探しているものをあなたに得るはずです。私はこのコードをテストしていませんが、それは私が自分で使ったものとほぼ同じです。