4

私のテーマの各ページで、ユーザーはスライダーを追加するオプションを持っています。これを行うと、スライダーのいくつかの設定を選択できます。これには、変更前にスライドが一時停止する時間、変更時にスライドが遷移するのにかかる時間、使用する遷移の種類などが含まれます。

これをハード コードして、ユーザーがスライダーのオプションを選択できないようにすると、コードは次のようになります。

<script>
jQuery(function(){

    jQuery('#camera_wrap_3').camera({
        height: '40%',
        thumbnails: true,
        time: 3500,
        fx: 'scrollBottom',
        transPeriod: 1200,
        autoAdvance: true,
        minHeight: '50px',
        mobileNavHover: false,
    });
});
</script>

ユーザーが設定を選択したときに作成される変数を上記のコードに渡す適切な方法は何ですか?

wp_enqueue を使用して、このファイルを適切な方法でエンキューできるようにしたいことに注意してください

4

2 に答える 2

2

これは、変数の受け渡しに関する質問に関連しているとwp_head思います-プラグインからパラメーターを保存する場合、Wordpressはパラメーターのスコープに応じて2つ(マルチサイトを使用している場合は3つ)のメソッドを提供します。

ページ/投稿に固有の場合は、カスタムフィールドAPIpostmetaを使用してパラメータをテーブルに保存する必要があります。値の配列が必要か、単一の値のみが必要かによって、true / falseの場所で使用およびフェッチします。 「幅」のようなものの場合は、おそらくこれをに設定します。詳細はこちら-http://codex.wordpress.org/Custom_Fieldsupdate_post_meta($post_id, $key, $data)get_post_meta($post_id, $key, $single)$singletrue

サイト全体に適用できる場合は、を使用してテーブルのオプションAPIに保存し、が見つからない場合はreturnedを使用して取得します。それ以外の場合は、を返します。マルチサイトにのみ適用可能な最後のオプションもOptionsAPIの一部であり、とを使用します。詳細はこちら-http://codex.wordpress.org/Options_APIoptionsupdate_option($key, $data)get_option($key, $default)$default$keyfalseupdate_site_option($key, $data)get_site_option($key, $default)

カスタムフィールド(およびプレミアム機能によるオプション)を管理するための優れたオプションは、高度なカスタムフィールドです。

これが投稿/ページごとであり、ACFで値を設定していると仮定すると、wp_headこれらのフィールドをJavascriptにプルするためのフックを作成できます。これをテーマのファイルに入れるかfunctions.php、テーマを変更した場合にそのままにしておきたい場合は、カスタム関数プラグインを使用できます。

// hooked to wp_head
function my_wp_head(){
    // get the current $post
    global $post;
    // get value or key "camera_time"
    $camera_time = get_post_meta($post->ID, "camera_time", true);

    // write result to javascript
    echo "<script>";
    echo "var cameraTime = {$camera_time};";
    // ... the rest of your javascript
    echo "</script>";
}
if (is_single()) // only include on single pages
    add_action( 'wp_head', 'my_wp_head' );
于 2012-11-08T23:48:06.800 に答える
1

そのためにextendメソッドを使用できます。

function foo (params) {
    //default values
    var settings = $.extend({
        'someKey': { k1: 'v1' },
        'otherKey':  'oTherValue'
    }, params);
     //use it 
    if (settings.someKey.k1 == 'v1') ...
    var bar = settings.otherKey;
}

次に、コードから呼び出すだけです

foo({someKey: {k1: 'v2'}, otherKey: 'bla' });

このアプローチを使用して、単純な jQuery プラグインを作成しました。見てみな

于 2012-11-08T21:56:01.930 に答える