Sự khác biệt giữa Tùy chọn & Cài đặt là gì?


14

Và tôi nên sử dụng cái nào?

Sự khác biệt giữa API tùy chọnAPI tập hợp là gì?

Tôi có một chủ đề với hơn 100 tùy chọn quản trị, tôi nên đăng ký và lưu trữ chúng như thế nào? Tại thời điểm này, tôi đang sử dụng API tùy chọn nhưng tôi không hài lòng lắm, mọi tùy chọn đều được đăng ký riêng để họ tạo ra nhiều truy vấn cơ sở dữ liệu.

Tôi thấy có ba cách lưu trữ tùy chọn / cài đặt WordPress tại thời điểm này:

1. API tùy chọn - cách cũ (tồi tệ nhất?).

(Tôi đang sử dụng cái này rồi)

<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>        

// all the inputs

<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="option1,option2,option3,..." />
<p class="submit">
<input type="submit" value="<?php _e('Save Changes') ?>" />
</p>
</form>

Và sau đó ở mặt trước:

echo get_option('option1'); 

Trông xấu xí và tôi không nghĩ đó là cách lưu trữ số lượng lớn các tùy chọn (tôi muốn nhóm chúng bằng cách nào đó).

2. API tùy chọn - 1 tùy chọn như một mảng lớn.

Tôi không chắc chắn ở đây làm thế nào để cập nhật mảng này bằng các hình thức html, bất cứ ai? Tôi tin rằng nó nên đi như sau:

$opt['option1'] = foo
$opt['option2'] = foo
$opt['option3'] = bar

update_option('theme_settings',$opt);

Và sau đó ở phía trước:

$settings = get_option('theme_settings');
echo $settings['option1']; 
echo $settings['option2']; 
echo $settings['option3']; 

Tôi đã nghe nói nó thực sự làm giảm số lượng truy vấn và tôi có tất cả chúng như một tùy chọn. Tôi rất thích sử dụng cái này nhưng như tôi đã đề cập ở trên, tôi không chắc cách cập nhật mảng tùy chọn này trong mẫu quản trị Wordpress. Tôi đoán: <input type="hidden" name="theme_settings" value="option1,option2,option3,..." />sẽ ghi đè lên mảng thay vì thêm các phần tử mới?

3. API cài đặt - cách mới.

Yêu cầu rất nhiều mã bổ sung:

function register_theme_settings() {
    //register our settings   
    register_setting( 'theme-settings', 'option1' );     
    register_setting( 'theme-settings', 'option2' );     
    register_setting( 'theme-settings', 'option3' );     
    register_setting( 'theme-settings', 'option4' );     
    register_setting( 'theme-settings', 'option5' );     
    // imagine this for 100 and more options    
};

Và tôi không chắc sự khác biệt giữa phương thức này và phương thức với một tùy chọn là một mảng?

tl; dr Vì vậy, tôi nên chiếu bộ lưu trữ cài đặt chủ đề của mình như thế nào để nó hoạt động nhanhlưu trữ tất cả các tùy chọn / cài đặt ở một nơi để tôi có thể, ví dụ, echo / kết xuất tất cả chúng với một chức năng đơn giản (có , Tôi muốn làm điều đó thật tệ nhưng tôi không biết làm thế nào với API Cài đặt này). Phương pháp thứ hai có vẻ tốt nhất cho đến nay.

Câu trả lời:


11

API tùy chọn chủ yếu là API cơ sở dữ liệu, cho phép bạn lấy và lưu trữ các giá trị trong bảng tùy chọn của cơ sở dữ liệu một cách dễ dàng.

API cài đặt là API giao diện. Nó cho phép bạn xây dựng màn hình cài đặt theo cách sẽ thích ứng với các thay đổi trong tương lai đối với giao diện WordPress, cũng như xử lý bảo mật (không áp dụng và danh sách trắng và xác thực và như vậy) một cách tự động và dễ dàng hơn so với cuộn mã của riêng bạn.

Thông tin thêm về API cài đặt: http://ottopress.com/2009/wordpress-sinstall-api-tutorial/


3
+1. API Cài đặt là cách tiếp cận chính xác và sẽ xử lý 100 tùy chọn Chủ đề của bạn mà không cần phải chú ý. Một số kẻ ngốc đã viết một hướng dẫn thực sự dài để kết hợp API Cài đặt trong Chủ đề WordPress .
Chip Bennett

Otto, @Chip Bennett cảm ơn các bạn. Tôi có thêm một câu hỏi - theo tài liệu tôi nên tạo nhiều nhóm cài đặt cho mỗi trang quản trị, liệu nó có ảnh hưởng đến hiệu suất / số lượng truy vấn không? Có gì sai khi giữ tất cả các tùy chọn trong một nhóm (giả sử 'cài đặt chủ đề') như tôi đã giải thích trong câu hỏi quá dài để đọc? :)
Wordpressor

2
Tôi sẽ khuyên bạn chỉ nên sử dụng một nhóm tùy chọn. Nếu bạn cần tổ chức UI, hãy sử dụng các phần cài đặt và hoặc tab trang cài đặt.
Chip Bennett

@Chip Bennett, được rồi, cảm ơn rất nhiều :) Hướng dẫn tuyệt vời btw.
Wordpressor

@ChipBennett Link: kết hợp API Cài đặt trong Chủ đề WordPress trong nhận xét của bạn bị hỏng.
Vijay Chavda
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.