2012-11-08 49 views
4

在我的主題的每個頁面上,用戶可以選擇添加滑塊。當他們這樣做時,他們可以爲滑塊選擇幾個設置。這包括幻燈片在更改前會暫停多久,幻燈片在其更改時需要多長時間才能轉換以及使用哪種類型的轉換。將選項傳遞給jquery文件的正確方法是什麼?

現在,如果我只是硬編碼本,而不是讓用戶選擇滑塊的選項,代碼應該是這樣的:

<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

+1

我想這取決於你想要的東西。你想讓它持久嗎?收藏的?重新加載設置回默認?根據你對這些問題的回答,有很多不同的實現。 – wanovak

+1

用戶如何選擇設置? – elclanrs

+1

'mobileNavHover:false,''< - '最後一個屬性稍後會給你提供問題後的分號。 – ahren

回答

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插件usnig這種方法。 check it out

+0

這適用於WordPress的後端選擇設置,然後讓它們永久設置? –

+0

不知道關於wordpress的具體內容。這是關於如何將params傳遞給函數的一般答案。 –

+0

嗯,上面那個例子的哪一部分會從php獲取變量? –

2

我假設這和你的關於傳遞變量到wp_head的問題有關 - 如果你想從插件存儲參數,Wordpress根據你的參數範圍提供兩個(如果你使用多站點的話) 。

如果它是特定於頁面/帖子,那麼您應該將參數存儲在postmeta表中,並使用定製字段API。您可以使用update_post_meta($post_id, $key, $data)並使用get_post_meta($post_id, $key, $single)來獲取它,其中$single是真/假,具體取決於您是想要一個值的數組還是隻有一個值 - 如果它類似於「寬度」,您可能將其設置爲true。更多信息在這裏 - http://codex.wordpress.org/Custom_Fields

如果它是適用於整個網站,那麼你將它用update_option($key, $data)存儲選項APIoptions表,並與get_option($key, $default)其中如果$key無法找到返回$default檢索它,否則它將返回false。僅適用於多站點的最後一個選項也是選項API的一部分,並使用update_site_option($key, $data)get_site_option($key, $default)。更多信息在這裏 - http://codex.wordpress.org/Options_API

管理自定義字段(以及通過高級功能選項)的極好選項是Advanced Custom Fields

假設這是每個帖子/頁面,並且您正在使用ACF設置值,那麼您可以編寫一個鉤子到wp_head以將這些字段拖到您的Javascript中。您可以將其放入主題中的functions.php文件中,或者如果您希望在更改主題時繼續使用該文件,則可以使用Custom Functions Plugin

// 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'); 
+0

據我所知,使用標準頁面自定義字段,我可以用get_post_meta來獲取這個字段,但我已經有了一個模板生成器的自定義metabox塊的整個框架,並且它們不使用基本的get_post_meta。以下是它的截圖:http://brainbuzzmedia.com/images/simplybusiness/template.jpg。你不會碰巧是自由職業者嗎? –

+0

@BRAINBUZZmedia我是,我現在正在旅行,但隨時給我發一條消息:http://doublesharp.com/#contact – doublesharp

相關問題