Và tôi nên sử dụng cái nào?
Sự khác biệt giữa API tùy chọn và API 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 nhanh và lư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.