ตัวเลือกและการตั้งค่าต่างกันอย่างไร


14

ฉันควรใช้อันไหนดี?

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 การตั้งค่านี้) วิธีที่สองดูดีที่สุดจนถึงตอนนี้

คำตอบ:


11

Options API เป็น API ฐานข้อมูลเป็นหลักซึ่งช่วยให้คุณรับและเก็บค่าในตารางตัวเลือกของฐานข้อมูลได้อย่างง่ายดาย

API การตั้งค่าเป็นอินเทอร์เฟซ API จะช่วยให้คุณสร้างหน้าจอการตั้งค่าในลักษณะที่จะปรับให้เข้ากับการเปลี่ยนแปลงในอนาคตของอินเทอร์เฟซ WordPress รวมถึงการจัดการด้านความปลอดภัย (แบบไม่ระบุชื่อและรายการที่อนุญาต

เพิ่มเติมเกี่ยวกับการตั้งค่า API: http://ottopress.com/2009/wordpress-settings-api-tutorial/


3
+1 API การตั้งค่าเป็นวิธีที่ถูกต้องและจะจัดการกับ 100 ตัวเลือกชุดรูปแบบของคุณโดยไม่ต้องละสายตา บางคนโง่เขียนมันยืดยาวกวดวิชาผสมผสาน API การตั้งค่าใน WordPress ธีม
Chip Bennett

อ็อตโต @Chip Bennett ขอบคุณพวกคุณ ฉันมีคำถามเพิ่มเติมอีกหนึ่งข้อ - ตามเอกสารฉันควรสร้างกลุ่มการตั้งค่าหลายกลุ่มสำหรับหน้าผู้ดูแลระบบแต่ละหน้าจะมีผลกับประสิทธิภาพ / จำนวนข้อความค้นหาอย่างใดหรือไม่ มีอะไรผิดปกติกับการเก็บตัวเลือกทั้งหมดไว้ในกลุ่มเดียว (สมมุติว่า 'การตั้งค่าชุดรูปแบบ') ตามที่ฉันอธิบายในคำถามที่ยาวเกินไปที่จะอ่านหรือไม่? :)
Wordpressor

2
ฉันอยากจะแนะนำให้ใช้กลุ่มตัวเลือกเดียวเท่านั้น หากคุณต้องการองค์กร UI ให้ใช้ส่วนการตั้งค่าและหรือแท็บหน้าการตั้งค่า
Chip Bennett

@ ชิปเบนเน็ตต์เอาล่ะขอบคุณมาก :) กวดวิชาที่ดี btw
Wordpressor

@ChipBennett Link: การรวม API การตั้งค่าใน WordPress Themesในความคิดเห็นของคุณเสีย
Vijay Chavda
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.