ฉันควรใช้อันไหนดี?
Options APIกับSetings APIต่างกันอย่างไร
ฉันมีชุดรูปแบบที่มีตัวเลือกผู้ดูแลมากกว่า 100 ตัวฉันจะลงทะเบียนและจัดเก็บได้อย่างไร ในขณะนี้ฉันใช้API ตัวเลือกแต่ฉันไม่พอใจเลยตัวเลือกเดียวทุกตัวจะถูกลงทะเบียนแยกจากกันดังนั้นพวกเขาจึงสร้างการสืบค้นฐานข้อมูลจำนวนมาก
ฉันเห็นสามวิธีในการจัดเก็บตัวเลือก / การตั้งค่า WordPress ในขณะนี้:
1. ตัวเลือก API - วิธีเก่า (แย่ที่สุด?)
(ฉันใช้อันนี้อยู่แล้ว)
<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>
จากนั้นในส่วนหน้า:
echo get_option('option1');
ดูน่าเกลียดและฉันไม่คิดว่ามันเป็นวิธีที่ถูกต้องในการจัดเก็บตัวเลือกจำนวนมาก (ฉันชอบที่จะจัดกลุ่มพวกเขาอย่างใด)
2. ตัวเลือก API - 1 ตัวเลือกเป็นอาร์เรย์ขนาดใหญ่
ฉันไม่แน่ใจที่นี่วิธีการอัปเดตอาร์เรย์นี้โดยใช้แบบฟอร์ม HTML ทุกคน ฉันเชื่อว่ามันควรจะเป็นเช่น:
$opt['option1'] = foo
$opt['option2'] = foo
$opt['option3'] = bar
update_option('theme_settings',$opt);
และจากนั้นในส่วนหน้า:
$settings = get_option('theme_settings');
echo $settings['option1'];
echo $settings['option2'];
echo $settings['option3'];
ฉันได้ยินมาว่ามันลดจำนวนข้อความค้นหาลงและฉันให้พวกเขาทั้งหมดเป็นตัวเลือกเดียว ฉันชอบที่จะใช้อันนี้ แต่ตามที่กล่าวไว้ข้างต้นฉันไม่แน่ใจว่าจะอัปเดตตัวเลือกต่างๆในฟอร์มผู้ดูแลระบบ Wordpress ได้อย่างไร ฉันเดาว่า: <input type="hidden" name="theme_settings" value="option1,option2,option3,..." />
จะเขียนทับอาร์เรย์แทนการเพิ่มองค์ประกอบใหม่หรือไม่
3. การตั้งค่า API - วิธีใหม่
ต้องการรหัสเพิ่มเติมจำนวนมาก:
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
};
และฉันไม่แน่ใจว่าอะไรคือความแตกต่างระหว่างสิ่งนี้กับวิธีการที่มีหนึ่งตัวเลือกเป็นอาร์เรย์?
tl; drดังนั้นฉันควรฉายที่จัดเก็บการตั้งค่าธีมของฉันอย่างไรจึงจะทำงานได้อย่างรวดเร็วและจัดเก็บตัวเลือก / การตั้งค่าทั้งหมดไว้ในที่เดียวดังนั้นฉันจะสามารถตัวอย่างเช่น echo / dump ทั้งหมดด้วยฟังก์ชั่นง่ายๆ ฉันต้องการทำสิ่งนั้นไม่ดี แต่ฉันไม่รู้ว่าจะทำอย่างไรกับ API การตั้งค่านี้) วิธีที่สองดูดีที่สุดจนถึงตอนนี้