คำถามติดแท็ก plugin-development

WordPress Plugins ช่วยให้การปรับเปลี่ยนการปรับแต่งและการปรับปรุงให้กับบล็อก WordPress ง่ายขึ้น แทนที่จะเปลี่ยนการโปรแกรมหลักของ WordPress คุณสามารถเพิ่มฟังก์ชันการทำงานด้วย WordPress Plugins

1
WP 3.3 วิธีเพิ่มไอเท็มเมนูในแถบผู้ดูแลระบบ
ฉันเพิ่งติดตั้งปลั๊กอิน Yoast SEO และสังเกตเห็นว่ามีการเพิ่มเมนู flyout ใหม่ลงในแถบผู้ดูแลระบบเมื่อมีการเปิดใช้งานปลั๊กอิน ใครรู้ว่ามีการสอนหรือตัวอย่างเกี่ยวกับวิธีการทำเช่นนี้?

2
ฟังก์ชั่นเครื่องมือที่กำหนดเองในปลั๊กอินไม่ทำงาน?
ฉันเอารหัสออกจากหนึ่งในชุดรูปแบบของฉันที่ฉันสร้างขึ้นและเป็นรายการของทั้ง 50 รัฐในรายการที่ไม่มีการเรียงลำดับที่บรรจุในวิดเจ็ตที่คุณสามารถลากและวางบนแถบข้างได้ ปัญหาคือเมื่อฉันลองใช้รหัสนี้ในไฟล์ PLUGIN ฉันได้รับข้อผิดพลาดต่อไปนี้: Fatal error: Call to a member function register() on a non-object in C:\xampp\htdocs\wordpress\wp-includes\widgets.php on line 431 ทำไมมันถึงทำงานในธีม แต่ไม่ใช่ในปลั๊กอิน? ยังไงก็ตามธีมที่ใช้งานไม่ได้เป็นธีมที่ฉันเอารหัสออกมา นี่คือรหัสของฉัน: http://pastebin.com/ZeRWW3yb ขอบคุณ

4
อัปเดตฟอร์มวิดเจ็ตหลังการลากและวาง (ข้อผิดพลาดการบันทึก WP)
ฉันโพสต์รายงานข้อผิดพลาดเกี่ยวกับเรื่องนี้เมื่อไม่กี่เดือนที่ผ่านมา ( บน WordPress trac (ข้อผิดพลาดการอัปเดตอินสแตนซ์ของ Widget อินสแตนซ์) ) และฉันคิดว่าฉันจะลองเขียนมันที่นี่ด้วย อาจมีบางคนมีทางออกที่ดีกว่าในเรื่องนี้มากกว่าฉัน โดยทั่วไปปัญหาคือถ้าคุณวางวิดเจ็ตในแถบด้านข้างแบบฟอร์มวิดเจ็ตจะไม่ได้รับการอัปเดตจนกว่าคุณจะกดบันทึกด้วยตนเอง (หรือโหลดหน้าซ้ำ) สิ่งนี้ทำให้ไม่สามารถใช้รหัสทั้งหมดจากform()ฟังก์ชันที่ใช้ ID อินสแตนซ์ของวิดเจ็ตเพื่อทำอะไรบางอย่าง (จนกว่าคุณจะกดปุ่มบันทึก) สิ่งใด ๆ เช่นคำขอ ajax สิ่ง jQuery เช่น colorpickers และอื่น ๆ จะไม่ทำงานทันทีเนื่องจากจากฟังก์ชันนั้นจะปรากฏว่าอินสแตนซ์วิดเจ็ตยังไม่ได้รับการเริ่มต้น การแก้ไขที่สกปรกจะเป็นการเรียกใช้ปุ่มบันทึกโดยอัตโนมัติโดยใช้สิ่งที่ต้องการเช่นlivequery : $("#widgets-right .needfix").livequery(function(){ var widget = $(this).closest('div.widget'); wpWidgets.save(widget, 0, 1, 0); return false; }); และเพิ่ม.needfixคลาสform()หากอินสแตนซ์วิดเจ็ตไม่ได้ดูการเริ่มต้น: <div <?php if(!is_numeric($this->number)): ?>class="needfix"<?php endif; ?> …

3
ปลั๊กอิน Wordpress Update ตะขอ / การกระทำ? ตั้งแต่ 3.9
ฉันได้ทำการวิจัยนี้สองสามครั้งแล้ว แต่การค้นหาของฉันไม่ได้เปิดเผยอะไรมากนอกจากรหัสที่กำหนดเองซึ่งอาจจะเป็นแบบฝึกหัด WordPress ที่ดีหรือไม่ดีก็ได้ ในฐานะของรุ่นล่าสุด (WordPress 3.9 "สมิ ธ ") มีการเพิ่มเบ็ดเข้าไปในกระบวนการอัปเดตปลั๊กอินหรือไม่? ฉันถามเพราะมันเป็นความต้องการขั้นพื้นฐานมาก แต่ฉันไม่เห็นมันเพิ่มไปยัง codex (ยัง) ถ้าไม่นักพัฒนาทั่วไปและผู้ปฏิบัติงานที่ดีที่สุดจ้างอะไร แก้ไข: เพื่อชี้แจงฉันไม่ได้พูดถึงการเปิดใช้งาน แต่เกี่ยวกับการอัปเดตด้วยวิธีนี้หากมีการเปลี่ยนแปลงในฐานข้อมูลหรืออาจแก้ไขได้

2
ฟังก์ชั่นเดียว. php หรือแยกเป็นไฟล์ขนาดเล็กจำนวนมาก?
ฉันกำลังสร้างกรอบงานง่าย ๆ พร้อมตัวเลือกชุดรูปแบบ ฉันแบ่งส่วนของรหัสภายในfunctions.phpและวางไว้ในโครงสร้างโฟลเดอร์เฉพาะ ตอนนี้ในfunctions.phpไฟล์หลักของฉันฉันมีเพียงการrequire_onceโทรไปยังไฟล์เหล่านี้ แต่เพื่อเหตุผลของการโต้แย้ง - สมมติว่าฉันจะลงท้ายด้วย 20 ไฟล์ที่จะรวม คำถาม: สิ่งนี้มีผลต่อประสิทธิภาพ WP ในลักษณะที่มองเห็นได้หรือไม่? จะดีกว่าหรือเปล่าที่จะเก็บทุกอย่างไว้ในไฟล์ 1 ไฟล์ (functions.php) วิธีที่ดีที่สุดที่จะไปเกี่ยวกับเรื่องนี้คืออะไร? ขอบคุณ

2
แสดงชื่อแถบข้างทั้งหมดหรือไม่
ฉันกำลังแสดงรายการแถบด้านข้างทั้งหมดเช่นนั้น: global $wp_registered_sidebars; echo '<pre>'; print_r($wp_registered_sidebars); echo '</pre>' ดังนั้นฉันจะได้รับสิ่งที่ชอบ: Array ( [sidebar-1] => Array ( [name] => Sidebar #1 [id] => sidebar-1 [description] => Sidebar number 1 [before_widget] => [after_widget] => [before_title] => [after_title] => ) (...) ) แต่ฉันชอบที่จะแสดงเป็นรายการที่เลือกเช่น: <select> <option value ="SIDEBAR-ID">SIDEBAR-NAME/option> <option value ="SIDEBAR-ID">SIDEBAR-NAME/option> (...) </select> Wordpress Codex …

5
กำลังส่งอาร์กิวเมนต์ไปยังการเรียกกลับหน้าเมนูผู้ดูแลระบบหรือไม่
สถานการณ์:ฉันทำงานกับปลั๊กอินและฉันพัฒนามันเป็นคลาสทุกอย่างทำงานได้ดีจนกระทั่งเจอสถานการณ์นี้ ฉันต้องการทำให้สิ่งต่าง ๆ สะอาดและลองสิ่งนี้ .. class MyPlugin { function __construct() { add_action('admin_menu', array(&$this, 'myplugin_create_menus'); } //I don't want to write a function for every options page I create //so I prefer to just load the content from an external file. function load_view($filename) { $view = require(dirname(__FILE__).'/views/'.$filename.'.php'); return $view; } //Here …

3
วิธีจัดคิว JavaScript ในปลั๊กอิน
ฉันดิ้นรนมากเวลานี้ทำงานรวมถึงไฟล์ JavaScript ในโฟลเดอร์ปลั๊กอิน ฉันกำลังพยายามสร้างปลั๊กอินโดยถ่ายโอนไฟล์วิดเจ็ตจากไดเรกทอรีธีม ฉันคัดลอกไฟล์วิดเจ็ต แต่ไฟล์วิดเจ็ตนั้นขึ้นอยู่กับไฟล์ JavaScript ดังนั้นฉันจึงสร้าง a / js / โฟลเดอร์ในไดเรกทอรีปลั๊กอิน ที่ซึ่งไฟล์นี้โฮสต์อยู่ "jquery.repeatable.js" ฉันใช้รหัสนี้ แต่ดูเหมือนจะไม่รวมไฟล์ js - function Zumper_widget_enqueue_script() { wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js' ); } add_action('admin_enqueue_scripts', 'Zumper_widget_enqueue_script'); ฉันค้นหาสิ่งนี้ในฟอรัม - /programming/31489615/call-a-js-file-from-a-plugin-directory แต่ก็ยังไม่เป็นประโยชน์ ฉันสรุปคำถามของฉันอีกครั้ง ในไดเรกทอรีปลั๊กอินของฉันมีไฟล์ js อยู่ภายใต้โฟลเดอร์นี้ - / js / ฉันต้องการรวมไว้ในกระบวนการที่ถูกต้องฉันต้องลงทะเบียนอะไรด้วยหรือไม่ มีบางอย่างผิดปกติกับส่วนนี้'admin_enqueue_scripts'หรือไม่?

6
ตรวจสอบว่ามีการใช้งานกูเทนเบิร์กหรือไม่
ฉันจะตรวจสอบได้อย่างไรว่าตัวแก้ไขที่ใช้อยู่ในปัจจุบันคือ Gutenberg ในปลั๊กอิน WordPress หรือไม่? ฉันต้องการสิ่งนี้เพราะ Gutenberg ไม่มีpost_submitbox_misc_actionsดังนั้นฉันต้องการทางเลือกซึ่งจะใช้หากแก้ไขปัจจุบันคือ Gutenberg

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

3
ข้อผิดพลาด PHP พร้อมตัวจัดการรหัสย่อจากคลาส
ขณะนี้ฉันกำลังใช้โฟลว์ทั่วไปต่อไปนี้สำหรับการเพิ่มรหัสย่อสำหรับปลั๊กอิน class MyPlugin { private $myvar; function baztag_func() { print $this->myvar; } } add_shortcode( 'baztag', array('MyPlugin', 'baztag_func') ); ตอนนี้เมื่อชั้นนี้และมันเป็นวิธีการที่เรียกว่าฉันได้รับข้อผิดพลาดดังต่อไปนี้ ข้อผิดพลาดร้ายแรง: ใช้ $ นี่เมื่อไม่ได้อยู่ในบริบทวัตถุใน ... (หมายเลขบรรทัดคือที่ฉันพิมพ์$this->myvar) นี่เป็นปัญหาในตอนท้ายของ Wordpress หรือมีบางอย่างที่ฉันทำผิดหรือเปล่า? ดูเหมือนจะเป็นอะไรที่เรียบง่ายจริงๆ

2
หน้ากำหนดเองพร้อมปลั๊กอิน
ฉันกำลังพัฒนาปลั๊กอินบางตัวที่ฉันต้องการเปิดใช้งานหน้าเว็บที่กำหนดเอง ในกรณีของฉันบางหน้ากำหนดเองจะมีรูปแบบเช่นแบบฟอร์มการติดต่อ (ไม่ใช่ตัวอักษร) เมื่อผู้ใช้จะกรอกแบบฟอร์มนี้และส่งมันควรจะมีขั้นตอนต่อไปซึ่งจะต้องมีข้อมูลเพิ่มเติม ช่วยบอกว่าหน้าแรกที่มีรูปแบบที่จะอยู่ในและหลังการส่งแบบฟอร์มผู้ใช้ควรจะเปลี่ยนเส้นทางไปwww.domain.tld/custom-page/ www.domain.tld/custom-page/secondเทมเพลตที่มีองค์ประกอบ HTML และรหัส PHP ควรกำหนดเองเช่นกัน ฉันคิดว่าส่วนหนึ่งของปัญหานั้นเป็นไปได้ที่จะประสบความสำเร็จด้วยการเขียน URL ที่กำหนดเองใหม่ แต่ส่วนอื่น ๆ ของฉันไม่เป็นที่รู้จักในขณะนี้ ฉันไม่รู้จริงๆว่าฉันควรเริ่มมองหาที่ไหนและการตั้งชื่อที่ถูกต้องสำหรับปัญหานั้นคืออะไร ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมจริงๆ

2
ส่งผ่านตัวแปร PHP ไปยังจาวาสคริปต์
มีความเป็นไปได้ไหมที่จะส่งตัวแปร PHP บางตัวในจาวาสคริปต์เพื่อใช้ในภายหลัง? single.phpเฉพาะใน ฉันได้ยินเกี่ยวกับwp_enqueue_scriptsแต่ที่มันเป็นสิ่งจำเป็นที่จะประกาศเส้นทางไปยังไฟล์ JS แต่ฉันไม่ต้องการมัน

3
เพิ่มตัวเลือกหน้าจอให้กับหน้าผู้ดูแลระบบที่กำหนดเอง
ฉันต้องการเพิ่มตัวเลือกหน้าจอในหน้าการตั้งค่าปลั๊กอินของฉันเช่นตัวเลือกที่มีอยู่ในแผงควบคุม ฉันลองใช้add_optionวิธีของWP_Screenวัตถุและพบว่ารองรับเพียงสองตัวเลือก และper_pagelayout_columns ไม่มีใครรู้ว่าตัวเลือกหน้าจอใดที่จะใช้เพื่อรับตัวเลือกเช่นเดียวกับในหน้าแดชบอร์ด แก้ไข : ให้ฉันอธิบายสิ่งที่ฉันพยายามเล็กน้อย ฉันมีส่วนที่แตกต่างกันในปลั๊กอินการลบข้อมูลจำนวนมากและแต่ละส่วนช่วยให้ผู้คนลบโพสต์ตามเกณฑ์บางอย่าง (เช่นหมวดหมู่แท็กแท็กอนุกรมวิธานที่กำหนดเอง ฯลฯ ) ฉันต้องการให้ผู้ใช้เลือกส่วนที่พวกเขาต้องการใช้และส่วนที่พวกเขาต้องการซ่อนคล้ายกับหน้าแดชบอร์ดที่ผู้ใช้สามารถเลือกวิดเจ็ตแดชบอร์ดที่พวกเขาต้องการที่จะเห็นและที่จะซ่อน ตอนนี้เพื่อที่จะใช้สิ่งนี้ฉันต้องการที่จะแสดงรายการของช่อง (หนึ่งสำหรับแต่ละส่วน) และให้ผู้ใช้เลือกที่จะแสดง เพื่อแสดงรายการช่องทำเครื่องหมายฉันต้องเรียกadd_optionวิธีการของWP_Screenวัตถุ เมื่อฉันทำอย่างนั้นฉันก็พบว่าขณะนี้add_optionฟังก์ชั่นรองรับเฉพาะสองประเภทนี้เท่านั้นและส่วนอื่น ๆ จะไม่สนใจ ต่อหน้า layout_columns แต่จะปรากฏเฉพาะในหน้าแดชบอร์ด ฉันต้องการทราบวิธีการทำซ้ำสิ่งที่คล้ายกันในส่วนตัวเลือกหน้าจอของหน้าผู้ดูแลระบบที่กำหนดเองของฉันเช่นกัน

2
รับ plugin_dir_url () จากส่วนลึกหนึ่งระดับภายในปลั๊กอิน
ฉันเขียนปลั๊กอินหลายตัวโดยใช้โครงสร้าง: /plugins/myplugin/myplugin.php /plugins/myplugin/class/class-myclass.php เพื่อใช้ประโยชน์จาก OO และการจัดโครงสร้างรหัสของฉันโดยรวม จากภายในไฟล์คลาสมีหลายครั้งที่ฉันต้องได้รับ URL ของปลั๊กอินพื้นฐาน ... ฉันใช้สิ่งต่อไปนี้ แต่ฉันแน่ใจว่ามีวิธีที่ดีกว่า: $this->plugin_location = substr(plugin_dir_url(__FILE__),0, strrpos(plugin_dir_url(__FILE__), "/",-2)) . "/"; ความคิดอื่นที่ฉันเล่นด้วยคือการมีคลาสซิงเกิลตันเพิ่มเติมที่เก็บการตั้งค่าทั้งหมดสำหรับปลั๊กอินและเพิ่มเลเยอร์สิ่งที่เป็นนามธรรมผ่านไฟล์คลาส ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก

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