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

วิดเจ็ตเป็นองค์ประกอบที่กำหนดค่าได้ที่ใช้ในการสร้างส่วนต่าง ๆ ของธีม WordPress

6
จะใส่รหัสของฉันได้ที่ไหน: plugin หรือ functions.php
มีรูปแบบที่เข้าใจง่ายหรือไม่ในการตัดสินใจว่าโค้ดประเภทใดเป็นของปลั๊กอินหรือธีมfunctions.phpหรือไม่ มีอยู่ หลาย กรณีและหลายการอภิปรายเกี่ยวกับหัวข้อที่ส่วนใหญ่เป็นเพราะมีความเข้าใจผิดบางอย่างเกี่ยวกับการทำงานภายในของ WordPress, ฉันขอคำตอบจากข้อเท็จจริงไม่ใช่ความคิดเห็น ควรอธิบายวิธีจัดการกับประเด็นเหล่านี้ (และอาจมากกว่า): ประเภทโพสต์ที่กำหนดเองและ taxonomies แบบฟอร์มการติดต่อ ย่อ วิดเจ็ตที่กำหนดเอง add_theme_support( 'automatic-feed-links' ); ฟังก์ชั่น SEO เช่นmetaองค์ประกอบที่กำหนดเอง สลับธีม มักจะมีข้อดีข้อเสียสำหรับทั้งสองฝ่าย คำถามที่ได้รับความนิยมมากที่สุดของเราคอลเลกชันที่ดีที่สุดของรหัสสำหรับไฟล์ functions.php ของคุณได้รับข้อมูลโค้ดจำนวนมากเป็นคำตอบที่อย่างน้อยเป็นที่ถกเถียงกัน เราต้องการเกณฑ์ที่ผู้เริ่มต้นสามารถเข้าใจได้อาจเป็นรายการตรวจสอบ - ด้วยเหตุผล ดูคำถามที่เกี่ยวข้องโดย Chip Bennett ในเว็บไซต์ meta ของเรา: คำถามที่ถามวิธีการแก้ปัญหาโดยเฉพาะ "ไม่มีปลั๊กอิน" ที่เกี่ยวข้อง: ฉันจะวางโค้ดขนาดเล็กที่ฉันพบที่นี่หรือที่อื่นบนเว็บได้ที่ไหน

3
ระหว่าง functions.php, วิดเจ็ตและปลั๊กอิน, ซึ่งโหลดก่อน?
ลูกค้าถามว่าปลั๊กอินแบบหมุนที่เขาใช้นั้นสามารถทำการวิดเจ็ตได้หรือไม่ นั่นหมายความว่าฉันควรสร้างวิดเจ็ตภายใน functions.php ซึ่งเรียกใช้ฟังก์ชันของปลั๊กอิน นั่นหมายความว่าจะต้องโหลดรหัสของปลั๊กอินก่อนเพื่อให้สามารถใช้งานฟังก์ชั่น WordPress ได้เมื่อโหลดไฟล์ functions.php ใช่ไหม มันจะใช้ได้ไหม

4
เพิ่มวิดเจ็ตในแถบด้านข้างโดยทางโปรแกรม
ฉันต้องการเพิ่มวิดเจ็ตลงในแถบด้านข้างสองรายการที่ฉันมี ฉันไม่สามารถหาวิธีที่เป็นทางการในการทำมันได้? ฉันเริ่มค้นหาในฐานข้อมูล ฉันพบว่ามันเป็นตัวเลือก 'sidebars_widgets' ซึ่งวางวิดเจ็ตในแถบด้านข้าง เมื่อดูที่ตัวเลือกชื่อวิดเจ็ตจะมีหมายเลขที่เพิ่มเข้ามาที่ท้ายเช่น: widget_name-6 หมายเลขนั้นมาจากไหน ความคิดเกี่ยวกับวิธีการแก้ไขปัญหานี้?
62 widgets  sidebar 

2
Wordpress 3.8 - ตัวเลือกหน้าจอแดชบอร์ด 1 คอลัมน์
ด้วย Wordpress 3.8 ใหม่ภายใต้ตัวเลือกหน้าจอพวกเขาดูเหมือนจะใส่ผิดที่ "คอลัมน์" คุณสมบัติที่คุณสามารถใส่วิดเจ็ตของคุณใน 1 คอลัมน์, 2 คอลัมน์, 3 คอลัมน์หรือ 4 คอลัมน์ คำถามของฉันคือฉันจะบังคับให้แดชบอร์ดวิดเจ็ตของฉันเป็นเพียง 1 คอลัมน์หรืออีกนัยหนึ่งคือใช้ความกว้างทั้งหมดของหน้าจอเทียบกับเพียงบางส่วนของหน้าจอ

2
การใช้งาน Javascript เมื่อเพิ่มวิดเจ็ตใน Backend
ฉันมีวิดเจ็ตที่มีตัวควบคุมจาวาสคริปต์แนบมาด้วย หากวิดเจ็ตปรากฏขึ้นเมื่อโหลดหน้าผู้ดูแลระบบวิดเจ็ตตัวควบคุมจะทำงานอย่างถูกต้อง เมื่อฉันเพิ่มวิดเจ็ตใหม่มันไม่ทำงานอย่างถูกต้องฉันได้รับมาร์กอัป แต่ไม่มีเหตุการณ์จาวาสคริปต์ที่จะมีผล ถ้าฉันบันทึกวิดเจ็ตใหม่เมื่อรีโหลดแบบฟอร์มตัวควบคุมจะถูกสร้างขึ้นอย่างถูกต้องและตอนนี้ทำงานได้ การรีเฟรชหน้ายังช่วยแก้ไขปัญหา แต่สำหรับวิดเจ็ตที่มีอยู่เท่านั้น วิดเจ็ตใหม่ยังคงมีปัญหานี้อยู่ โดยเฉพาะฉันกำลังเรียกใช้เลือกในอินพุตที่เลือกที่จุดเหล่านี้: เอกสารพร้อม ajaxComplete ฉันตรวจสอบแล้วว่ารหัสของฉันทำงานในแต่ละกิจกรรมตามต้องการ แต่ผลลัพธ์ไม่เป็นไปตามที่คาดไว้ นี่คือปลั๊กอินทดสอบที่แสดงถึงปัญหา: https://gist.github.com/Tarendai/8466299 คุณจะเห็นว่าฉันมีเคาน์เตอร์ที่เพิ่มขึ้นทุกองค์ประกอบที่เลือกพบว่ามันสามารถแปลงได้ หมายเหตุ: เมื่อหน้าวิดเจ็ตโหลดฉันสามารถเห็นตัวนับเพิ่มขึ้นในคอนโซล JS ตามที่คาดไว้ เมื่อฉันเพิ่มวิดเจ็ตใหม่รหัสจะถูกรัน แต่มันล้มเหลวในการค้นหาองค์ประกอบที่เลือกใด ๆ ที่มันสามารถทำงานได้ตามที่แสดงโดย found.length ที่ 0 ซึ่งไม่ควรเป็นเช่นนี้เพราะวิดเจ็ตใหม่ทุกประเภทนั้นควร มีองค์ประกอบที่เลือก อิลิเมนต์ที่เลือกมีคลาสที่จะระบุคลาสนี้จะถูกลบออกเมื่อมีการใช้ไลบรารีเลือกเพื่อป้องกันการทำซ้ำและการประมวลผลซ้ำบนวิดเจ็ตที่มีอยู่ ก่อนที่จะใช้ selectize ฉันใช้ Select2 ซึ่งมีปัญหาเดียวกัน การแสดงความคิดเห็นรหัส AJAX ฉันคาดหวังว่าวิดเจ็ตใหม่จะมีอินพุตเลือกแบบมาตรฐาน พวกเขาไม่ได้. ฉันไม่รู้ว่าทำไมในกรณีนี้ ดังนั้นฉันจะทำให้ตัวเลือกควบคุมทำงานโดยไม่บอกผู้ใช้ให้รีเฟรช / คลิกบันทึกก่อนทำการเปลี่ยนแปลงได้อย่างไร

1
วิธีรวมช่องทำเครื่องหมายในรูปแบบแบ็กเอนด์วิดเจ็ต?
ฉันกำลังพยายามรวมช่องทำเครื่องหมายในวิดเจ็ตแบ็กเอนด์ของฉัน แต่ฉันไม่สามารถรับค่า (เปิดหรือปิด) หลังจากที่ผู้ใช้ส่ง ฉันคิดว่าค่าจะถูกเก็บไว้ใน "esc_attr ($ check)" (เนื่องจากเมื่อใช้การป้อนข้อความ) แต่ฉันไม่สามารถเรียกคืนได้ นี่คือสิ่งที่ฉันพยายามตอนนี้: public function form( $instance ) { $check = isset( $instance[ 'check' ] ) ? $instance[ 'check' ] : 'off'; echo esc_attr( $check ); // If the input is type text it outputs the value ?> <input class="widefat" id="<?php echo …
17 php  widgets 

4
กำลังโหลดสคริปต์เฉพาะเมื่อมีรหัสย่อหรือวิดเจ็ตเฉพาะ
ฉันต้องการวิธีกรองเนื้อหาของหน้า / โพสต์ก่อนที่จะโหลดดังนั้นฉันสามารถเพิ่มสคริปต์ไปยังส่วนหัวหากมีรหัสย่อที่เฉพาะเจาะจงอยู่ หลังจากค้นหามากฉันเจอสิ่งนี้ใน http://wpengineer.com function has_my_shortcode($posts) { if ( empty($posts) ) return $posts; $found = false; foreach ($posts as $post) { if ( stripos($post->post_content, '[my_shortcode') ) $found = true; break; } if ($found){ $urljs = get_bloginfo( 'template_directory' ).IMP_JS; wp_register_script('my_script', $urljs.'myscript.js' ); wp_print_scripts('my_script'); } return $posts; } add_action('the_posts', 'has_my_shortcode'); ซึ่งยอดเยี่ยมอย่างแน่นอนและทำสิ่งที่ฉันต้องการ …

3
ฉันจะเพิ่มแท็บ“ แทรกจาก URL” ลงในเครื่องมืออัปโหลดสื่อ 3.5 แบบกำหนดเองได้อย่างไร
ฉันได้แทรกตัวอัปโหลดสื่อ WP 3.5 ลงในวิดเจ็ตโดยเรียกใช้ JavaScript นี้เมื่อคลิกปุ่ม: var frame = wp.media( { title : 'Widget Uploader', multiple : false, library : { type : 'image' }, button : { text : 'Select Image' } } ); frame.on( 'close', function() { var attachments = frame.state().get( 'selection' ).toJSON(); imageWidget.render( widget_id, widget_id_string, attachments[0] ); …
17 widgets  uploads  media 

4
จำกัด จำนวนวิดเจ็ตในแถบด้านข้าง
หากฉันใช้พื้นที่ที่กำหนดเองที่กำหนดเอง (ตัวอย่างเช่นส่วนท้าย) ที่มีจำนวน จำกัด เฉพาะจุดสำหรับวิดเจ็ต (ตามการออกแบบ) ฉันสามารถ จำกัด จำนวนของเครื่องมือที่ผู้ใช้อาจรวมไว้ในพื้นที่ที่กำหนดได้อย่างไร ไม่สำคัญว่าโซลูชันจะอยู่ที่ส่วนหลังหรือส่วนหน้า ขอขอบคุณ.
17 widgets  sidebar 

3
ฉันจะแก้ไขเอาต์พุตวิดเจ็ตดีฟอลต์ของ WordPress ได้อย่างไร?
ฉันไม่ต้องการสไตล์วิดเจ็ตเริ่มต้นด้วย CSS เท่านั้น ฉันต้องการแสดงเนื้อหาวิดเจ็ต 'หมวดหมู่' เริ่มต้นด้วยโครงสร้าง HTML ของฉันเอง มีตัวกรองหรือขอให้ทำเช่นนั้นหรือไม่
17 filters  widgets 

2
ให้สิทธิ์การเข้าถึงแก่แถบด้านข้างในการแก้ไข
ฉันต้องการให้สิทธิ์บทบาท Editor เพื่อแก้ไขแถบด้านข้างและเนื้อหา ฉันมีวิดเจ็ตข้อความอยู่ในนั้นและเพื่อแก้ไขวิดเจ็ตข้อความนี้ผู้ใช้จะต้องเป็นผู้ดูแลระบบ - นี่แย่มาก ฉันจะให้สิทธิ์แก่บทบาทผู้แก้ไขที่จะทำให้เขาสามารถเข้าถึงการแก้ไขแถบด้านข้างได้อย่างไร

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; ?> …

1
ฉันสามารถสร้างวิดเจ็ต“ โพสต์ล่าสุด” ของฉันเองหรือปรับแต่งที่มีอยู่ได้หรือไม่?
ฉันต้องการเปิดใช้งานวิดเจ็ตโพสต์ล่าสุดที่มีความสามารถในการแสดงลิงก์ "ดูทั้งหมด" เมื่อมีการโพสต์มากกว่าที่ฉันได้ตั้งวิดเจ็ตให้แสดง ฉันต้องการยกเว้นหมวดหมู่หรือโพสต์บางประเภท เป็นไปได้ไหมที่จะทำผ่านทางฟังก์ชั่นของธีมของฉัน? (1) ปรับแต่งวิดเจ็ตที่มีอยู่หรือ (2) สร้างสำเนาของมันที่ฉันสามารถปรับแต่ง?

3
จัดคิวสคริปต์ / สไตล์ชีทของวิดเจ็ตใน HEAD ตามเงื่อนไข (เฉพาะเมื่อปรากฏบนหน้า!)
ฉันพยายามโหลดสคริปต์และสไตล์สำหรับวิดเจ็ต WordPress ด้วยเงื่อนไขต่อไปนี้ ... สคริปต์ต้องโหลดใน HEAD (มิฉะนั้นจะแตก) สคริปต์จะต้องโหลดเฉพาะเมื่อวิดเจ็ตแสดงจริง (ค่อนข้างหนัก) ฉันได้ทำการค้นหาบ่อยครั้งและดูเหมือนว่านี่จะเป็นปัญหาที่พบบ่อย (ยังไม่แก้) ... แต่ฉันหวังว่าจะมีใครบางคนที่นี่สามารถแก้ไขปัญหาได้สำเร็จ นี่คือสิ่งที่ดีที่สุดที่ฉันเคยได้รับ ... ต่อไปนี้เป็นวิดเจ็ตง่ายๆที่พิมพ์ข้อความไปยังแถบด้านข้าง มันประสบความสำเร็จในการโหลด jQuery ตามเงื่อนไข (เมื่อวิดเจ็ตปรากฏขึ้นจริง) ... แม้ว่าจะอยู่ในส่วนท้ายเท่านั้น! (หมายเหตุ: อาจใช้งานได้กับ WordPress 3.3เท่านั้นแม้ว่าแฮ็คนี้อาจให้ความเข้ากันได้ย้อนหลัง) class BasicWidget extends WP_Widget { function __construct() { parent::__construct(__CLASS__, 'BasicWidget', array( 'classname' => __CLASS__, 'description' => "This is a basic widget template that outputs …

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