คำถามติดแท็ก settings-api

API การตั้งค่าที่เพิ่มใน WordPress 2.7 ช่วยให้หน้าผู้ดูแลระบบที่มีฟอร์มการตั้งค่าสามารถจัดการแบบกึ่งอัตโนมัติได้ ช่วยให้คุณกำหนดหน้าการตั้งค่าส่วนภายในหน้าและฟิลด์เหล่านั้นภายในส่วนต่างๆ สามารถลงทะเบียนหน้าการตั้งค่าใหม่พร้อมกับส่วนและฟิลด์ที่อยู่ภายในได้ นอกจากนี้ยังสามารถเพิ่มหน้าการตั้งค่าที่มีอยู่ได้โดยการลงทะเบียนส่วนการตั้งค่าใหม่หรือฟิลด์ที่อยู่ด้านใน

1
API การตั้งค่าพร้อมตัวอย่างอาร์เรย์
ฉันใช้หนังสือการพัฒนาปลั๊กอิน Wrox WordPress เป็นข้อมูลอ้างอิงหลักสำหรับการเริ่มต้นใช้งานปลั๊กอินใหม่และฉันเข้าใจว่าการตั้งค่าทั้งหมดสามารถบันทึกเป็น 1 อาร์เรย์ได้ แต่หนังสือไม่ได้ยกตัวอย่างของสิ่งนี้และทุกสิ่งที่ฉันต้องการ การค้นหาบนเว็บนั้นแตกต่างจากตัวอย่างหนึ่งไปอีกอย่างหนึ่ง ช่วงครึ่งหลังของการโพสต์โดย Konstantinทำให้ฉันเข้ามาใกล้ แต่ฉันอยากเห็นตัวอย่างที่สมบูรณ์มากขึ้นด้วยหลาย ๆ ฟิลด์

2
เพิ่มฟิลด์ที่กำหนดเองหลายรายการในหน้าการตั้งค่าทั่วไป
สิ่งที่ฉันต้องการจะทำคือการเพิ่มฟิลด์ที่กำหนดเองสองสามอย่างให้กับการตั้งค่าทั่วไป นี่คือรหัสที่ฉันใช้ มันใช้งานได้ดี แต่ฉันไม่สามารถคิดได้ว่าจะเพิ่มฟิลด์เพิ่มเติมได้อย่างไร ฉันต้องการสร้างสองฟิลด์สำหรับตอนนี้หนึ่งฟิลด์สำหรับหมายเลขโทรศัพท์และอีกฟิลด์หนึ่งสำหรับที่อยู่: function register_fields() { register_setting('general', 'my_first_field', 'esc_attr'); add_settings_field('my_first_field', '<label for="my_first_field">'.__('My Field' , 'my_first_field' ).'</label>' , 'print_custom_field', 'general'); } function print_custom_field() { $value = get_option( 'my_first_field', '' ); echo '<input type="text" id="my_first_field" name="my_first_field" value="' . $value . '" />'; } add_filter('admin_init', 'register_fields'); วิธีเดียวที่ฉันจัดการเพื่อให้มันทำงานได้กับหลาย ๆ ฟิลด์คือการทำซ้ำทุกอย่าง ดังนั้นมันจะเป็นดังนี้: function …

2
API การตั้งค่าเทียบกับ Theme Customizer
คำถามนี้ถูกย้ายจาก WordPress Development Meta Stack Exchange เพราะสามารถตอบได้ใน WordPress Development Stack Exchange อพยพ 6 ปีที่แล้ว เมื่อใดจึงจะเหมาะสมที่จะใช้การตั้งค่า API และเมื่อใดควรใช้ตัวกำหนดธีมเองดีกว่า ฉันมี Googled ทุกเช้าฉันไม่สามารถหาคำแนะนำที่ดีและได้รับการพิจารณาในเรื่องนี้ได้ ในขณะที่ยังเร็วที่จะบอกว่าฉันรู้สึกว่าเครื่องมือปรับแต่งชุดรูปแบบเป็นขั้นตอนแรกที่มีการชี้นำต่อการนำคุณลักษณะการแก้ไขที่คล้ายกับ Squarespaceเพิ่มเติม มีใครรู้บ้างเกี่ยวกับแผนการที่จะทำให้พระอาทิตย์ตก API การตั้งค่าให้แก่ Customizer Theme หรือไม่ เราทุกคนควรจะค่อยๆเคลื่อนไปหามันหรือเราจะดีกว่าที่จะยึดการตั้งค่า API หรือไม่? พวกเขาสามารถอยู่เคียงข้างกันหรือไม่และถ้าเป็นเช่นนั้นการแบ่งความรับผิดชอบจะอยู่ที่ไหน

5
“ ข้อผิดพลาด: ไม่พบหน้าตัวเลือก” ในการส่งหน้าการตั้งค่าสำหรับปลั๊กอิน OOP
ฉันกำลังพัฒนาปลั๊กอินโดยใช้ที่เก็บข้อมูลBoilerplate ของ Tom McFarlinเป็นแม่แบบซึ่งใช้วิธีปฏิบัติของ OOP ฉันพยายามหาสาเหตุที่แน่ชัดว่าทำไมฉันจึงไม่สามารถส่งการตั้งค่าของฉันได้อย่างถูกต้อง ฉันได้ลองตั้งค่าแอ็ตทริบิวต์การกระทำเป็นสตริงว่างตามที่แนะนำในคำถามอื่นรอบ ๆ ที่นี่ แต่นั่นไม่ได้ช่วย ... ด้านล่างเป็นการตั้งค่ารหัสทั่วไปที่ฉันใช้ ... แบบฟอร์ม (/views/admin.php): <div class="wrap"> <h2><?php echo esc_html( get_admin_page_title() ); ?></h2> <form action="options.php" method="post"> <?php settings_fields( $this->plugin_slug ); do_settings_sections( $this->plugin_slug ); submit_button( 'Save Settings' ); ?> </form> </div> สำหรับรหัสต่อไปนี้ให้ถือว่าการเรียกกลับทั้งหมดสำหรับ add_settings_field () และ add_settings_section () มีอยู่ยกเว้น 'option_list_selection' คลาสผู้ดูแลระบบปลั๊กอิน (/ …

1
วิธีการส่งผ่านข้อโต้แย้งจาก add_settings_field () เพื่อฟังก์ชั่นการโทรกลับ?
ฉันมีฟังก์ชั่นเช่นนี้: add_settings_field( 'contact_phone', 'Contact Phone', 'settings_callback', 'general'); ที่ได้ผล มันเรียก settings_callback เย็น. ปัญหาที่ฉันมีคือ: ฉันไม่ต้องการกำหนดฟังก์ชั่นการโทรกลับสำหรับทุกการตั้งค่าที่ฉันเพิ่มถ้าสิ่งที่ฉันทำคือการสะท้อนสิ่งเล็กน้อย function settings_callback() { echo '<input id="contact_phone" type="text" class="regular-text" name="contact_phone" />'; } ทำไมบนโลกนี้ฉันต้องทำอย่างนั้น? ID คลาสและชื่อทั้งหมดควรเป็นพารามิเตอร์ ไม่มีวิธีการส่งต่อพารามิเตอร์ไปที่ฟังก์ชั่น settings_callback หรือไม่ ฉันเริ่มดูหลักมาที่นี่: http://core.trac.wordpress.org/browser/tags/3.1.3/wp-admin/includes/template.php .. และพบกับ $ wp_settings_fields ทั่วโลก สิ่งนี้กำหนดไว้ที่ไหน?

3
จะส่งผ่านตัวแปรไปยัง add_settings_section () โทรกลับได้อย่างไร
ฉันพยายามทำให้เป็นอัตโนมัติเท่าที่จะทำได้ฟังก์ชั่นการตั้งค่า API จะเรียกใช้การตั้งค่าแต่ละอย่างในปลั๊กอิน วนรอบตัวเลือกอาร์เรย์และแสดงผลadd_settings_section()และadd_settings_field()ง่ายพอ: add_settings_section(): $oenology_hooks_tabs = oenology_hooks_get_settings_page_tabs(); foreach ( $oenology_hooks_tabs as $tab ) { $tabname = $tab['name']; $tabtitle = $tab['title']; $tabsections = $tab['sections']; foreach ( $tabsections as $section ) { $sectionname = $section['name']; $sectiontitle = $section['title']; $sectiondescription = $section['description']; // Add settings section add_settings_section( 'oenology_hooks_' . $sectionname . '_section', …

2
ฟังก์ชัน get_option ถูกแคชหรือไม่
ในปลั๊กอินของฉันฉันใช้รหัสต่อไปนี้เพื่อดึงตัวเลือกจากฐานข้อมูล: $options = get_option('my_plugin_options'); ถ้าฉันใช้ 10 ครั้งนี้ในฟังก์ชั่นต่าง ๆ ของปลั๊กอิน, WordPress ทำแบบสอบถาม 10 ข้อไปยังฐานข้อมูล, หรือใช้การโทรเพียง 1 ครั้งต่อการร้องขอ HTTP และแคชผลลัพธ์?

3
ข้อดีของ API การตั้งค่าคืออะไร
ให้ฉันนำหน้าสิ่งนี้โดยบอกว่าฉันแทบจะไม่เคยทำงานกับ WordPress - ในความเป็นจริงครั้งล่าสุดที่ฉันทำเว็บไซต์ใน WordPress กลับมาในช่วง 2.2 เมื่อวานนี้ฉันทำทุกอย่างยุ่ง ๆ และถามคำถามหลายข้อที่นี่เพื่อพยายามใช้งานปลั๊กอินเมนูพื้นฐาน ตอนนี้ฉันมีปลั๊กอินทำงานได้อย่างสมบูรณ์และทำงานตามที่ฉันคาดไว้ดังนั้นฉันจึงตัดสินใจเปลี่ยนแปลงเล็กน้อยที่นี่และเพิ่มฟังก์ชั่นและความเข้ากันได้รวมถึงการใช้ API การตั้งค่า อย่างไรก็ตามช่วงเวลาสั้น ๆ ในการอ่านบทช่วยสอนเกี่ยวกับ API นี้และฉันค่อนข้างสับสนแล้วความสับสนนี้จะลึกซึ้งยิ่งขึ้นเมื่อฉันอ่านและพยายามใช้ตัวอย่าง - ซึ่งทำให้ยากยิ่งขึ้นโดยความจริงที่ว่าปลั๊กอินของฉันถูกใช้เป็นคลาส . หากฉันทำสิ่งผิดปกติจากสิ่งที่ฉันเข้าใจในการใช้งาน API การตั้งค่าต้องมีการสร้างฟังก์ชั่นใหม่ต่อการตั้งค่า นี่หมายถึงฟังก์ชั่น 3-5 ตัวสำหรับปลั๊กอินเฉลี่ยและสูงสุดถึงร้อยสำหรับปลั๊กอินขั้นสูงเพิ่มเติม ดูเหมือนว่าน่าหัวเราะที่จะเขียนฟังก์ชั่นมากมาย (และพัฒนาระบบการตั้งชื่อเพื่อไม่ให้เกิดความสับสน) เมื่อคุณสามารถนำเข้า$_POSTตัวแปรที่เกี่ยวข้องทั้งหมดลงในอาเรย์และนำไปสู่ความยุ่งเหยิงทั้งหมดได้อย่างง่ายดาย บางทีฉันอาจจะล้าสมัย แต่ถ้ามีบางอย่างที่จะได้รับจากสิ่งนี้ฉันไม่เห็นเหตุผลที่จะเพิ่มจำนวนสามเท่าหรือสี่เท่าของรหัสที่ฉันเขียน นี่คือวิธีที่ฉันจัดการตัวเลือกก่อนพยายามเพิ่มการตั้งค่า API: function __construct() { /* constructor stuff */ $this->options = $this->db_options = get_option( 'de-menu-options' ); if( $this->options …

1
หน้าการตั้งค่าโพสต์ประเภทกำหนดเองเลือกหน้าเพื่อแสดงการเก็บถาวร
ดังนั้นฉันจึงปฏิบัติตามคำตอบที่ได้รับการยอมรับของโพสต์นี้เป็นไปได้ที่จะเพิ่มการตั้งค่าอื่นในการตั้งค่า 'แสดงหน้าแรก' สำหรับประเภทโพสต์ที่กำหนดเอง แต่ไม่ได้ผลทั้งหมดต้องเปรียบเทียบกับคำตอบที่ยอมรับในโพสต์นี้ ไม่สามารถส่งออก do_settings_sections ไม่เข้าใจว่าทำไม ตอนนี้มันใช้งานได้จริงโดยใช้รหัสต่อไปนี้ //Add settings to menu add_action( 'admin_menu', 'events_options_add_page' ); function events_options_add_page() { // add_submenu_page('edit.php?post_type=events', 'Events Admin', 'Events Settings', 'edit_posts', basename(__FILE__), 'events_options_do_page'); add_submenu_page('edit.php?post_type=events', 'Events Admin', 'Events Settings', 'edit_posts', basename(__FILE__), 'events_options_do_page'); } ///wordpress/32689/possible-to-add-another-setting-to-front-page-displays-setting-for-custom-post //Fix Cap to allow editors to edit theme options function events_get_options_page_cap() { …

1
เรียกใช้ฟังก์ชั่นตัวเลือกชุดรูปแบบหลังจากที่บันทึกไว้?
คำถามแปลก ๆ ฉันจะรันฟังก์ชั่นที่กำหนดเองได้อย่างไรหลังจากการตั้งค่าธีมของฉันถูกบันทึกไว้? ฉันเห็นว่าฟังก์ชั่น register_settings () มีการโทรกลับ sanitize แต่ที่ทำงานก่อนที่จะมีการเปลี่ยนแปลงการตั้งค่า ฉันต้องการบางสิ่งบางอย่างที่จะทำงานหลังจากที่พวกเขาได้รับการบันทึก มีการกระทำหรือตัวกรองที่ฉันสามารถใช้เพื่อทำสิ่งนั้นได้หรือไม่? แก้ไข - ดังนั้นฉันมีการตั้งค่านี้ฉันได้ทำ: add_settings_section( 'kjd_body_background_settings_section', // ID hook name null, // label null, // function name 'kjd_body_background_settings' // page name ); add_settings_field( 'kjd_body_background_colors', // ID hook name null, //label null, //callback 'kjd_body_background_settings', // page name 'kjd_body_background_settings_section' // parent section …

1
ฉันจะบันทึกอาร์เรย์เลือกหลายรายการด้วยการตั้งค่า API สำหรับหน้าตัวเลือกปลั๊กอินได้อย่างไร
ฉันคิดว่านี่อาจเป็นปัญหากับ PHP ของฉันมากกว่าที่จะใช้การตั้งค่า API แต่ฉันไม่สามารถรับ Wordpress เพื่อบันทึกอาร์เรย์ของข้อมูลสำหรับกล่องแบบเลือกได้หลายแบบ กล่องแบบเลือกได้หลายรูปแบบสอดคล้องกับเขตข้อมูลเมตาแบบกำหนดเองและตัวเลือกที่เลือกคือประเภทโพสต์ที่กำหนดเองที่จะแสดงเขตข้อมูลเมตานั้น นี่คือรหัสที่แสดง: case 'select2': echo "<select id='$id' style='width:15em;height:10em;' class='select$field_class' name='" . $buddha_option_name . "[$id]' multiple>"; foreach($choices as $item) { $item = explode("|",$item); $item[0] = esc_html($item[0], 'buddha_textdomain'); $selected = ($options[$id]==$item[1]) ? 'selected="selected"' : ''; echo "<option value='$item[1]' $selected>$item[0]</option>"; } echo "</select>"; echo ($desc != …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.