คำถามติดแท็ก options

ใน WP `options` เป็นคำที่ใช้สำหรับตัวแปรที่เก็บไว้ในฐานข้อมูล พวกเขาสามารถเข้าถึงได้ผ่านตัวเลือก API

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
จะใช้ช่องทำเครื่องหมายและปุ่มตัวเลือกในหน้าตัวเลือกได้อย่างไร?
โทรหาฉันงี่เง่า แต่ฉันไม่เข้าใจวิธีการทำ สำหรับการป้อนข้อความฉันจะ: <input type="text" name="option_name" value="<?php echo get_option( 'option_name' ); ?>" /> และแล้วเบ็ดลงใน workdpress register_setting()ใช้ get_option('option_name')จากนั้นผมก็จะได้รับความคุ้มค่าผ่านทาง ฉันจะทำเช่นนั้นกับช่องทำเครื่องหมายและปุ่มตัวเลือกได้อย่างไร
16 options 

3
ทำไมตาราง wp_options` จึงไม่มีดัชนีบน "autoload"
ในตอนต้นของแต่ละหน้าเสิร์ฟโดย WordPress มีการเรียก MySQL เพื่อดึงข้อมูลตัวเลือก: SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'; เนื่องจากไม่มีดัชนีในautoloadคอลัมน์ MySQL จึงต้องค้นหาแถวทั้งหมด ฉันเจอความคิดเห็นของคำตอบนี้ด้วยว่าจะไม่มีการเพิ่มประสิทธิภาพแม้ว่าจะมีดัชนีก็ตาม ในใบสมัครของฉันฉันใช้ค่าชั่วคราวจำนวนมากเพื่อทำหน้าที่แทนเซสชัน พวกเขาทำงานได้ดีและฉันมีกิจวัตรการเก็บขยะของตัวเอง ผมสังเกตเห็นว่าในwp_optionsตารางค่าชั่วคราวของฉัน (คนที่เริ่มต้นด้วย_transient_) autoload=noทุกคนมี ฉันคาดว่าจำนวนแถวของwp_optionsตารางของฉันจะเพิ่มขึ้นตามจำนวนผู้ใช้ที่เกิดขึ้นพร้อมกันเพิ่มขึ้น ฉันต้องการที่จะรู้ว่าทำไมตารางถูกออกแบบด้วยวิธีนี้ และฉันควรสร้างดัชนีสำหรับกรณีเฉพาะของฉันหรือไม่

1
ตัวเลือกการปรับปรุงที่เก็บอยู่ในอาร์เรย์หลายมิติ
ฉันมีข้อมูลในwp_optionsตารางที่จัดเก็บในปัจจุบันเป็นอาร์เรย์หลายมิติ ( profile_element_order): a:12:{s:17:"img_base64_enable";s:1:"1";s:25:"moulding_combination_page";s:0:"";s:24:"moulding_collection_page";s:0:"";s:25:"idea_gallery_thumb_height";s:3:"200";s:24:"idea_gallery_thumb_width";s:3:"200";s:23:"collection_thumb_height";s:3:"200";s:22:"collection_thumb_width";s:3:"200";s:20:"profile_item_columns";s:1:"4";s:17:"idea_item_columns";s:1:"2";s:24:"collections_item_columns";s:1:"2";s:25:"combinations_item_columns";s:1:"4";s:21:"profile_element_order";a:5:{i:0;s:8:"Option 1";i:1;s:8:"Option 2";i:2;s:8:"Option 3";i:3;s:8:"Option 4";i:4;s:8:"Option 5";}} สิ่งที่ฉันพยายามทำให้สำเร็จคืออัปเดตprofile_element_orderตัวเลือก (ภายในตัวเลือกเหล่านั้น) นี่คือทุกสิ่งที่ดู: function psort_save_order() { global $mouldings_options; $list = $mouldings_options['profile_element_order']; $new_order = $_POST['list_items']; $new_list = array(); // update order foreach($new_order as $v) { if(isset($list[$v])) { $new_list[$v] = $list[$v]; } } // save the new order update_option('profile_element_order', $new_list); die(); } add_action('wp_ajax_psort_update_order', …

4
วิธีการอัพเดทตัวเลือกแบบอนุกรมโดยทางโปรแกรม?
ฉันต้องการอัปเดตตัวเลือกปลั๊กอินโดยอัตโนมัติ มีบางสิ่งที่ฉันซ้ำไปซ้ำมามากมาย ด้วยwp-cliฉันรู้ว่าฉันสามารถอัปเดตตัวเลือกง่าย ๆ เช่นนี้: php wp-cli.phar option update blog_public 1 อย่างไรก็ตามตัวเลือกปลั๊กอินบางตัวบันทึกตัวเลือกในสตริงที่ทำให้เป็นอนุกรม ตัวอย่างของ option_value ต่อเนื่องใน wp_options: a:9:{s:4:"from";s:21:"xx@xxx.com";s:8:"fromname";s:51:"xxx";s:4:"host";s:13:"smtp.xx.com";s:10:"smtpsecure";s:3:"ssl";s:4:"port";s:3:"465";s:8:"smtpauth";s:3:"yes";s:8:"username";s:21:"xx@xxx.com";s:8:"password";s:13:"xxx";s:10:"deactivate";s:0:"";} จะอัพเดทตัวเลือกเหล่านั้นอย่างไร?
15 options  wp-cli 

3
วิธีเพิ่มฟิลด์สำหรับตัวเลือกทั่วไซต์ใหม่บนหน้าจอการตั้งค่าเครือข่าย
ฉันกำลังทำงานกับปลั๊กอินและส่วนหนึ่งของมันเกี่ยวข้องกับการตั้งค่าตัวเลือกที่ใช้กับไซต์ทั้งหมดในเครือข่าย WordPress ฉันรู้เกี่ยวกับadd_site_optionและget_site_optionฟังก์ชั่นที่ช่วยให้คุณประหยัดค่าลงในตาราง wp_sitemeta แต่สิ่งที่ฉันไม่สามารถคิดออกเป็นวิธีการที่จะวางเขตข้อมูลในสถานที่ที่เหมาะสมในการแบ็กเอนด์ WordPress และวิธีการที่จะสกัดกั้นการประหยัดจากทั่วทั้งไซต์ ค่าเพื่อแทรกการเรียก add_site_option เมื่อเกิดขึ้น สำหรับปัญหาแรก (เพิ่มเขตข้อมูล) ปกติแล้วฉันจะใช้การตั้งค่า API โดยเฉพาะregister_settingและadd_settings_fieldเพื่อกำหนดรายการใหม่ให้เป็นรายการที่ปลอดภัยแล้วแทรกเขตข้อมูลลงในหน้าตัวเลือกที่เหมาะสม แต่ฉันไม่สามารถหาข้อมูลได้ทุกที่ในว่าคุณสามารถใช้ add_settings_field เพื่อเพิ่มฟิลด์ไปยังหน้าการตั้งค่าในส่วนผู้ดูแลเครือข่ายใหม่ของแบ็กเอนด์หากมีฟังก์ชั่นทางเลือกที่ทำหน้าที่เป็นหน้าที่ของผู้ดูแลระบบเครือข่ายหรือ เพียงแค่ต้องฉีด HTML ด้วยตนเอง (คุณสามารถทำได้ด้วยตนเองโดยการเขียนฟังก์ชั่นที่สะท้อนฟิลด์แล้วเชื่อมต่อฟังก์ชั่นนั้นเข้ากับการกระทำ "wpmu_options" ซึ่งได้รับการเรียกใช้ที่ส่วนท้ายของหน้าการตั้งค่าใน Network Admin แต่คุณต้องจัดการกับข้อมูลที่ไม่ใช่ และทุกอย่างอื่นด้วยตนเอง) ปัญหาที่สองอาจเกี่ยวข้องกับการค้นหาการกระทำที่ทำงานเมื่อผู้ใช้กด "บันทึก" ในหน้าการตั้งค่าผู้ดูแลเครือข่าย แต่ฉันยังไม่พบสิ่งนั้น โอกาสในการขายใด ๆ จะได้รับการชื่นชมอย่างมาก ดังนั้น - ความคิด? มีวิธีหรูหราในการอนุญาตการจัดการตัวเลือกไซต์สำหรับปลั๊กอินผ่านพื้นที่ผู้ดูแลระบบเครือข่ายใหม่หรือไม่? ถ้าเป็นเช่นนั้นมันเป็นอย่างไรบ้าง?

1
ตัวเลือกและการตั้งค่าต่างกันอย่างไร
ฉันควรใช้อันไหนดี? 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') ?>" /> …
14 options 

6
มันจะทำลายเว็บไซต์ของฉันหรือไม่ถ้าฉันลบบันทึกชั่วคราวทั้งหมดในตาราง wp_options
ขณะนี้ไซต์ของฉันมีระเบียนชั่วคราว 500k + ที่ชั่วร้ายในตาราง wp_options สิ่งนี้ทำให้ตารางล้มเหลวบ่อยครั้งและเป็นเว็บไซต์ของฉันด้วย ฉันคิดว่าบันทึกชั่วคราวจะหมดเวลาหลังจากนั้น ฉันไม่แน่ใจว่าปลั๊กอินตัวไหนที่รับผิดชอบและสิ่งที่ผิดพลาดไป อย่างไรก็ตามฉันไม่ต้องการให้เว็บไซต์ของฉันพังบ่อยเช่นนี้ จำนวนระเบียนในwp_optionsตารางเพิ่มขึ้นเป็น 200k + เมื่อไม่กี่สัปดาห์ที่ผ่านมาและตอนนี้ 500k + ฉันควรจะลบ%transient_timeout%บันทึก - 200k + ของพวกเขาในขณะนี้? ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก. อัพเดทเมื่อวันที่ 16 กรกฎาคม 2555 ฉันเสี่ยงจริงๆ (ฉันสำรองข้อมูลเว็บไซต์ของฉันก่อน) โดยการลบระเบียนชั่วคราวทั้งหมดและฐานข้อมูลของเว็บไซต์ของฉันไม่ได้ 'ล้มเหลวนับตั้งแต่ :) ขอบคุณอีกครั้งทุกคน!

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 …

5
การใช้ตัวเลือกวิดเจ็ต 'นอก' วิดเจ็ต
ฉันต้องการบันทึกพารามิเตอร์บางอย่างในตัวเลือกวิดเจ็ตซึ่งจะถูกส่งไปยังหน้าอื่น วิดเจ็ตเป็นรูปแบบที่เรียกบริการเว็บ ตัวเลือกที่ฉันต้องการผ่านคือการรับรองความถูกต้องสำหรับเว็บเซอร์ซึ่งปัจจุบันมีการเข้ารหัสอย่างหนักในหน้าผลลัพธ์ (ทำเป็นเทมเพลต) ดังนั้นจึงควรซ่อนจากผู้ใช้เว็บไซต์ รหัสจากวิดเจ็ต / ปลั๊กอิน: function widget($args, $instance){ extract($args); $title = apply_filters('widget_title', empty($instance['title']) ? 'Choose a service' : $instance['title']); $lineOne = empty($instance['username']) ? '' : $instance['username']; $lineTwo = empty($instance['password']) ? '' : $instance['password']; # Before the widget echo $before_widget; // etc... หน้าผลลัพธ์ ... $url = "http://www.nhs.uk/NHSCWS/Services/ServicesSearch.aspx?user=".[USERNAME]."&pwd=".[PASSWORD]."&q=".$_POST['PostCode']."&type=".$_POST['ServiceType'].""; ยังคงเรียนรู้ว่า …
13 options  widgets 

1
ประสิทธิภาพด้วย autoload และตารางตัวเลือก
ฉันกำลังเล่นกับautoloadคอลัมน์ของoptionsตาราง ฉันไม่พบข้อมูลมากนักเกี่ยวกับวิธีใช้ค่าที่โหลดอัตโนมัติ ฉันพยายามprint_r($GLOBALS)และเห็นว่าตัวเลือก autoloaded $GLOBALS['wp_object_cache']->cache['options']['alloptions']จะถูกเก็บไว้ใน มีวิธีอื่นในการเข้าถึงตัวแปรเหล่านั้นหรือไม่ สมมติว่าฉันต้องเข้าถึงตัวเลือกmy_optionซึ่งตั้งค่าเป็น autoload หลายครั้งในเทมเพลตที่แตกต่างกัน (เช่นในheader.phpครั้งเดียวครั้งเดียวfooter.php) วิธีใดที่แนะนำ เป็นไรไหมที่ฉันจะเรียกคืนจาก$GLOBALSอาเรย์ (เนื่องจากมีค่าอยู่ที่นี่แล้ว) ฉันต้องใช้get_option('my_option')ครั้งเดียวและทำให้ตัวแปรเป็นโกลบอลอีกครั้ง ใช้get_option('my_option')แต่ละครั้ง (ซึ่งฉันไม่เห็นจุดทำ) อื่น ๆ อีก
12 options 

2
จะเก็บข้อมูลฟิลด์วิดเจ็ตเป็นอาร์เรย์ได้อย่างไร?
ฉันกำลังสร้างวิดเจ็ตมันต้องเก็บประมาณ 10 ID ตอนนี้ฉันใช้เมธอดฟิลด์ต่อไปนี้เพื่อจัดเก็บแต่ละ ID ในฟิลด์แยก มันเก็บข้อมูลของแต่ละฟิลด์ในแยกใน wordpress เป็นไปได้หรือไม่ที่จะเก็บข้อมูลของทุกฟิลด์ในหนึ่งแถวใน wordpress สำหรับการสอบโดยใช้อาร์เรย์? <input class="widefat" id="<?php echo $this->get_field_id('item1_id'); ?>" name="<?php echo $this->get_field_name('item1_id'); ?>" value="<?php echo $instance['item1_id']; ?>" /> <input class="widefat" id="<?php echo $this->get_field_id('item2_id'); ?>" name="<?php echo $this->get_field_name('item2_id'); ?>" value="<?php echo $instance['item2_id']; ?>" />

2
การเพิ่มฟิลด์แบบฟอร์มวิดเจ็ตแบบไดนามิก
ฉันพยายามเพิ่มเขตข้อมูลฟอร์มลงในวิดเจ็ต WordPress แบบไดนามิก ดังนั้นหากผู้ใช้ต้องการเพิ่มวันที่อื่นให้กับกิจกรรมพวกเขาสามารถคลิกปุ่มเพื่อรับฟิลด์เพิ่มเติม คำถามคือ: บันทึกฟิลด์อินพุตที่สร้างใหม่ไปยังฐานข้อมูลของฉันได้อย่างไร ฉันจำเป็นต้องเขียนฟังก์ชั่นอัพเดทแบบกำหนดเองหรือไม่? เคล็ดลับใด ๆ นี่คือลักษณะที่วิดเจ็ต: นี่คือรหัส php ของฉันสำหรับวิดเจ็ต (จนถึงตอนนี้): class Spillelister extends WP_Widget { public function Spillelister() { $widget_options = array ( 'classname' => 'spillelister-widget', 'description' => 'Widget for å illustrere spillelister.'); parent::WP_Widget('spillelister_widget', 'Spilleplan', $widget_options); } // The actual widget user interface public function widget($args, …

2
จะเก็บรหัส API และรหัสผ่านใน WordPress ได้อย่างปลอดภัยที่ไหน?
ฉันต้องการใช้ API สองสามตัวและหลายคนมาพร้อมกับรหัสคีย์ลับและรหัสผ่านที่จำเป็นในการทำงาน WordPress เก็บข้อมูลนั้นไว้ที่ไหน? สมมติว่าทุกคนสามารถแฮ็คฐานข้อมูลของคุณมีอยู่แล้วสำหรับ WordPress เพื่อให้การบันทึกข้อมูลที่ปลอดภัยมากขึ้น? พิจารณาความสามารถในการเปลี่ยนคีย์เหล่านี้บ่อยๆดังนั้นฉันจะต้องอัปเดตคีย์บนหน้าตัวเลือก UPDATE Mossack Fonseca Breach - ปลั๊กอินการปฏิวัติของ WordPress Slider สาเหตุที่เป็นไปได้ เอกสารปานามา: แฮ็คอีเมลผ่าน WordPress, เอกสารสามารถแฮกผ่าน Drupal

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