WordPress

คำถาม & คำตอบสำหรับนักพัฒนา WordPress และผู้ดูแลระบบ

1
ทำไม WordPress ถึงมีเกลือมากกว่าหนึ่งเกลือ
ฉันเดาว่าฉันกำลังขาดความรู้ด้านความปลอดภัยที่นี่ แต่มันควรจะมีเกลือเพียงอย่างเดียวหรือไม่? เหตุใดจึงจำเป็นเกลือสี่แบบที่แตกต่างกัน? define('AUTH_SALT', 'z(ly|p-aeKf^I~OfOUUIL&Y?C5Z.iu|L}kY%dvclq.h9n`)MlZe6'); define('SECURE_AUTH_SALT', 'NIY8g>=l9y~eV~WLu 3n>UG#3wSl4YfT%;z9`7m9Gk/k_Vn4`ej8'); define('LOGGED_IN_SALT', '<-[R@, I;m%n*9G?CU1a:))pEAa/r5X5@pT`cO2H|c2&x~G<p*3T:-5v<N'); define('NONCE_SALT', 'm(-0:+r0a%z~a:2F;]-geM$9~!4j(q3QdpkmB7;P+ZYYw7Rdy{97fS'); (ไม่ต้องกังวลค่า mangled และเป็นไซต์ท้องถิ่น)
9 security 

2
วิธีที่ดีที่สุดในการ flush_rewrite_rules สำหรับประเภทโพสต์ที่กำหนดเองในปลั๊กอิน mu-plugins?
ฉันกำลังเขียนปลั๊กอินที่สร้างประเภทโพสต์ที่กำหนดเอง (เหนือสิ่งอื่นใด) มันเป็นปลั๊กอิน MultiSite การและอาศัยอยู่ในไดเรกทอรีMU-ปลั๊กอิน แนวปฏิบัติที่ดีที่สุดสำหรับการจัดการflush_rewrite_rules ()ในสถานการณ์นี้คืออะไร สำหรับปลั๊กอิน 'ปกติ' ที่คุณต้องทำในฮุคการเปิดใช้งานซึ่งเป็นไปไม่ได้สำหรับปลั๊กอินที่ต้องใช้เนื่องจากตะขอเหล่านั้นไม่พร้อมใช้งาน เนื่องจากสิ่งนี้น่าจะเป็นเหตุการณ์ "ครั้งเดียว" หลังจากลงทะเบียนประเภทโพสต์ที่กำหนดเองมันจะทำให้การทำอะไรเช่นนี้ในชั้นเรียนของฉันที่ลงทะเบียน CPT: private function check_flush_my_CPT() { global $wp_rewrite; if ( !get_option('my_plugin_firstrun') ) { $wp_rewrite->init(); $wp_rewrite->flush_rules(true); update_option('my_plugin_firstrun', 'yes'); } } public function register_my_CPT() { // do all the CPT setup steps for the $args array... register_post_type('my_CPT', $args); $this->check_flush_my_CPT(); } …

6
วิธีการกรองผู้ใช้ในหน้าผู้ใช้ผู้ดูแลระบบโดยเขตข้อมูลเมตาที่กำหนดเอง?
ปัญหา WP ปรากฏขึ้นเพื่อลบค่าของตัวแปรคิวรีของฉันก่อนที่จะถูกใช้เพื่อกรองรายชื่อผู้ใช้ รหัสของฉัน ฟังก์ชั่นนี้เพิ่มคอลัมน์ที่กำหนดเองในตารางผู้ใช้ของฉันเมื่อ/wp-admin/users.php: function add_course_section_to_user_meta( $columns ) { $columns['course_section'] = 'Section'; return $columns; } add_filter( 'manage_users_columns', 'add_course_section_to_user_meta' ); ฟังก์ชั่นนี้จะบอก WP ถึงวิธีเติมค่าในคอลัมน์: function manage_users_course_section( $val, $col, $uid ) { if ( 'course_section' === $col ) return get_the_author_meta( 'course_section', $uid ); } add_filter( 'manage_users_custom_column', 'manage_users_course_section' ); สิ่งนี้จะเพิ่มรายการแบบหล่นลงและFilterปุ่มด้านบนตารางผู้ใช้: function add_course_section_filter() { …

2
ทำไมต้องใช้ admin-ajax.php และมันทำงานอย่างไร
ajax ของฉันเรียกใช้ข้อมูล json ได้ดีเหมือนฟังก์ชั่นนี้ php: add_action( 'wp_ajax_nopriv_load-filter', 'prefix_load_cat_posts' ); add_action( 'wp_ajax_load-filter', 'prefix_load_cat_posts' ); function prefix_load_cat_posts () { //get data here } javascript: var ajaxurl = 'http://'+window.location.host+'/wp-admin/admin-ajax.php'; jQuery.ajax({ type: 'POST', url: ajaxurl, etc. ฉันมี 2 คำถาม 1) ทำไมต้องใช้ admin-ajax.php แทนที่จะเข้ารหัส json ของคุณในไฟล์แยกเช่นthemes/example/json.phpและเข้ารหัสข้อมูลของคุณที่นั่น? 2) admin-ajax.php ทำงานอย่างไร ฉันไม่เข้าใจมากจากไฟล์นั้น มันโหลดฟังก์ชั่นทั้งหมดเพื่อให้คุณพร้อมใช้งานหรือไม่ ขอบคุณ!
9 ajax 

3
ฉันจะแทนที่ฟังก์ชั่นที่ประกาศในคลาสของปลั๊กอินใน functions.php ได้อย่างไร
ฉันต้องการแก้ไขฟังก์ชั่นในปลั๊กอิน มันถูกประกาศในไฟล์หลักของปลั๊กอินดังนี้: class WCPGSK_Main { ... public function wcpgsk_email_after_order_table($order) { ... } } เพิ่มชื่อจากที่นั่นเช่นนี้: add_action( 'woocommerce_email_after_order_table', array($this, 'wcpgsk_email_after_order_table') ); ฉันเดาว่ามันจะเป็นไปได้ที่จะแทนที่ถ้ามีการเข้าถึงคลาสใน functions.php จากนั้นฉันจะสามารถเขียนสิ่งนี้: $wcpgsk = new WCPGSK_Main; remove_action( 'woocommerce_email_after_order_table', array($wcpgsk, 'wcpgsk_email_after_order_table') ); function customized_wcpgsk_email_after_order_table($order) { ... } add_action( 'woocommerce_email_after_order_table', array($wcpgsk, 'customized_wcpgsk_email_after_order_table') ); ความคิดของฉันในการเข้าถึงคลาสในไฟล์ functions.php คือการรวมไฟล์ที่มีการประกาศคลาสใน functions.php: require_once('/wp-content/plugins/woocommerce-poor-guys-swiss-knife/woocommerce-poor-guys-swiss-knife.php'); $wcpgsk = new WCPGSK_Main; …

2
จะทราบได้อย่างไรว่าปลั๊กอินเข้ากันได้กับหลายไซต์?
ในฐานะมือใหม่ WordPress ผู้ดูแลระบบฉันเพิ่งผ่านการอัพเกรด WordPress แบบไม่อัตโนมัติครั้งแรก ฉันอัพเกรดการติดตั้ง WordPress ห้าแบบจาก 4.1.3 เป็น 4.2 พวกเขาทั้งหมดอ้างถึงเว็บไซต์ต่าง ๆ ที่โฮสต์บนโฮสต์เดียวกันกับโดเมนหลักหนึ่งโดเมนและโดเมน addon สี่โดเมน ในแต่ละเว็บไซต์ฉันใช้ปลั๊กอินต่อไปนี้: Akismet; Google Analytics โดย Yoast; Google Adsense; แผนผังไซต์ Google XML และ Jetpack โดย WordPress.com เพื่อเพิ่มความคล่องตัวในการจัดการต่อไปฉันพิจารณาที่จะรวมการติดตั้งทั้งห้าไว้ในการติดตั้งแบบหลายไซต์ จนถึงตอนนี้ฉันพบว่ามันค่อนข้างยากที่จะหาคำตอบที่ชัดเจนเกี่ยวกับความเข้ากันได้ของปลั๊กอินแต่ละตัวที่มีการติดตั้งแบบหลายไซต์บนเว็บไซต์ของปลั๊กอิน หน้าปลั๊กอินเป็นสถานที่ที่เหมาะสมในการค้นหาสิ่งนี้หรือไม่? มีที่ตั้งส่วนกลางที่สามารถหาข้อมูลนี้ได้หรือไม่?

1
แสดงโพสต์ยอดนิยมในเว็บไซต์ php อื่นผ่าน WP REST JSON API
ฉันต้องการแสดงโพสต์ที่ได้รับความนิยม & ล่าสุดในเว็บไซต์ PHP อื่นภายใต้โดเมนเดียวกัน ตัวอย่าง: www.example.com -> เว็บไซต์หลัก (php, mysql) www.example.com/blog -> บล็อก WordPress ต้องแสดงบล็อกโพสต์ยอดนิยมล่าสุดในเว็บไซต์หลัก โปรดทราบว่าบล็อกและเว็บไซต์หลักใช้ฐานข้อมูลแยกกันสองฐาน ฉันตัดสินใจใช้ปลั๊กอินWP REST JSON APIสำหรับสิ่งนั้น ตอนนี้ฉันมีคำถามที่แตกต่าง ฉันใช้รหัสต่อไปนี้เพื่อดึงโพสต์ยอดนิยมเมื่อสัปดาห์ที่แล้ว สิ่งที่ฉันต้องการคือการได้รับข้อมูลเดียวกันนี้ผ่านการเรียก API $args = array( 'date_query' => array( array( 'after' => '1 week ago' ) ), 'posts_per_page' => $recent_posts_count, 'ignore_sticky_posts' => 1, 'meta_key' => 'post_views_count', 'orderby' => …

2
ความแตกต่างระหว่าง get_site_option และ get_blog_option คืออะไร
ฉันพยายามที่จะเข้าใจความแตกต่างระหว่างget_site_option ()และget_blog_option () มีบล็อกและเว็บไซต์ของสองสิ่งที่แตกต่างกันอย่างไร ขอโทษถ้าคำถามนี้ดูเหมือนว่าพื้นฐาน แต่เมื่ออ้างถึงเว็บไซต์ WordPress ฉันมักจะใช้คำทั้งสองอย่างหลวม ๆ (หมายถึงสิ่งเดียวกัน) ตอนนี้ฉันสงสัยว่ามีความแตกต่างหรือไม่?
9 multisite 

4
Wp_Schedule_Event ทุกวันในเวลาที่กำหนด
ฉันเขียนโค้ดต่อไปนี้เพื่อเรียกใช้ฟังก์ชั่นของฉันทุกวันเวลา 16:20 แต่ฉันเดาว่าเป็นปัญหาในรหัส .. ไม่ทำงาน เวลาประทับของยุค: 1427488800 3/28/2015 1:10:00 AM if( !wp_next_scheduled( 'import_into_db' ) ) { wp_schedule_event( time('1427488800'), 'daily', 'import_into_db' ); function import_into_db(){ ////My code } add_action('wp', 'import_into_db'); }
9 cron 

1
การลบชื่อผู้ใช้ออกจากคุกกี้ 'wordpress_logged_in'
ฉันทำงานกับลูกค้าที่มีมาตรการรักษาความปลอดภัยที่เข้มงวด หลังจากผ่านการตรวจสอบความปลอดภัยเราได้รับแจ้งว่าชื่อผู้ใช้ที่เก็บไว้ในคุกกี้ที่เข้าสู่ระบบเช่น wordpress_logged_in[username]|[hash] เป็นสิ่งที่ต้องถูกลบออก เนื่องจากนี่เป็นส่วนสำคัญของระบบการเข้าสู่ระบบฉันไม่แน่ใจว่าจะลบออกและยังคงรักษาเซสชั่น

3
สคริปต์ Vagrant เพื่อติดตั้งชุดค่าผสม PHP / WordPress ทุกรุ่น
ฉันกำลังมองหาวิธีการได้อย่างรวดเร็วและซ้ำ ๆ ตั้งค่าการทดสอบ / การแก้จุดบกพร่องสภาพแวดล้อมสำหรับปลั๊กอินของเราส่วนใหญ่อาจใช้คนจรจัด โครงการเช่นVVVมุ่งเน้นไปที่การตั้งค่าสภาพแวดล้อมเดียว (หรือสองสามสภาพแวดล้อมเช่นเสถียร / ลำตัว) ในขณะที่สิ่งที่ฉันกำลังมองหาคือสคริปต์ที่จะติดตั้งสภาพแวดล้อมเช่น: wp39-php52.local wp40-php52.local wp41-php52.local wp39-php53.local wp40-php53.local เป็นต้น (คุณจะได้รับความคิด) มีอะไรแบบนี้เหรอ? สิ่งที่ฉันพบมากที่สุดคือWordPress Vagrant Boxesซึ่งอย่างน้อยก็ทำเวอร์ชั่น PHP แต่อาจจะมีบางอย่างที่สมบูรณ์กว่านี้ ขอบคุณ

3
อัปเกรดปลั๊กอิน: การตั้งค่าวิดเจ็ต
ฉันได้ลองทำวิจัยเรื่องนี้แล้ว แต่ยังไม่พบว่ามีอะไรที่แข็ง ฉันมีปลั๊กอินที่ฉันใช้งานและระหว่างเวอร์ชันล่าสุดและเวอร์ชันใหม่ที่เราได้ทำการปรับปรุงบางอย่างสำหรับวิดเจ็ตที่เปลี่ยนชื่อการตั้งค่าบางส่วน (ในแบ็กเอนด์) และฉันมีปัญหาในการสร้างรูทีนการอัพเกรดเพื่อทำสิ่งนี้ สิ่งที่ฉันได้ทำจนถึงตอนนี้ที่ดูเหมือนว่าจะทำงาน (ส่วนใหญ่) คือ: $widget = get_option( 'widget_name' ); if( is_array( $widget ) && ! empty( $widget ) ) { foreach( $widget as $a => $b ) { if( ! is_array( $b ) ) { continue; } foreach( $b as $k => $v ) { $widget[$a]['setting1'] …

1
กำลังโหลดสคริปต์ด้วยการขึ้นต่อกันกำลังยกเลิกการโหลดการพึ่งพาของสคริปต์อื่น
ครั้งแรกฉันรู้ว่าคำถามของฉันเกิดขึ้นในบริบทของงานของฉันกับปลั๊กอิน WooCommerce ซึ่งโดยปกติแล้วจะทำให้เป็นนอกหัวข้อ อย่างไรก็ตามฉันคิดว่าคำถามของฉันเกี่ยวข้องwp_enqueue_scriptดังนั้นหวังว่าจะยังคงอยู่ในหัวข้อ ดังนั้น WooCommerce กำลังลงทะเบียนสคริปต์บนadmin_enqueue_scriptsเบ็ด สคริปต์นี้ต้องการการพึ่งพาจำนวนมาก: wp_register_script( 'wc-admin-meta-boxes', WC()->plugin_url() . '/assets/js/admin/meta-boxes' . $suffix . '.js', array( 'jquery', 'jquery-ui-datepicker', 'jquery-ui-sortable', 'accounting', 'round', 'ajax-chosen', 'chosen', 'plupload-all' ), WC_VERSION ); (มีการจัดคิวเฉพาะบนหน้า post.php และ post-new.php สำหรับประเภทผลิตภัณฑ์โพสต์ในภายหลังในรหัส) ในปลั๊กอินที่กำหนดเองที่ฉันเขียนเพื่อทำงานกับ WooCommerce ฉันกำลังโหลดสคริปต์ในเบ็ดเดียวกัน wp_enqueue_script( 'My_Plugin_Metabox', My_Plugin_Class()->plugin_url() . '/assets/js/mnm-write-panel.js', array( 'jquery', 'wc-admin-meta-boxes'), My_Plugin_Class()->version, true ); หากฉันเข้าสู่สคริปต์ของปลั๊กอินและตั้งค่า$in_footerพารามิเตอร์เป็นtrueอย่างลึกลับสคริปต์ jQuery …

1
เพิ่มแท็บใหม่ลงในรายการติดตั้งปลั๊กอิน Wordpress
เมื่อผู้ใช้ค้นหาปลั๊กอินจากพื้นที่ Add Plugin ของ WP Admin ฉันต้องการเพิ่มแท็บใหม่ (พร้อมลิงค์ไปยังหน้า) ถัดจากแท็บปัจจุบัน ตำแหน่งที่ฉันต้องการให้ลิงค์ถูกทำเครื่องหมายในภาพหน้าจอด้านล่าง มองหามัน @ http://codex.wordpress.org/Adding_Administrator_Menusแต่ไร้ประโยชน์ WP อนุญาตหรือไม่ ขอบคุณล่วงหน้า.

1
ปัญหาในการเข้าคิวสไตล์ชุดรูปแบบของผู้ปกครองและเด็กด้วยวิธี Codex ที่แก้ไขแล้ว
โพสต์นี้แสดงคำถามสองสามข้อที่ฉันได้พบเกี่ยวกับการเปลี่ยนแปลงล่าสุดเกี่ยวกับวิธีการจัดคิวชีตสไตล์ชีทที่เกิดขึ้นในเธรดนี้และเธรดนี้ ปัญหาที่ฉันพบเกิดขึ้นในสถานการณ์การใช้งานทั่วไปโดยใช้ชุดรูปแบบหลักที่ใช้กันอย่างแพร่หลายและได้รับการดูแลเป็นอย่างดีซึ่งเป็นธีมลูกแบบเฉพาะที่พร้อมติดตั้ง WP 4.0 functions.php ของชุดรูปแบบลูกของฉันประกอบด้วยwp_enqueue_styleฟังก์ชันตามรายละเอียดใน Codexเท่านั้น โปรดทราบว่าในขณะที่รหัสที่อ้างถึงด้านล่างนี้ใช้เฉพาะกับชุดรูปแบบนี้ส่วนใหญ่จะใช้รูปแบบการเข้ารหัสปัจจุบันที่ใช้โดยธีมหลัก นอกจากนี้ประเด็นที่น่าเป็นห่วงของฉันมักจะซ้ำซ้อนกับชุดรูปแบบของผู้ปกครองจำนวนมากในขณะนี้อยู่ในป่า นอกจากนี้คำถามที่เพิ่มขึ้นเหล่านี้สามารถใช้งานได้ในระดับสากลไม่ว่าจะใช้ธีมหลักใด ปัญหาที่ 1: สองคน การตั้งค่าที่แนะนำ: ธีมหลักคือการจัดคิวสไตล์และสคริปต์โดยใช้wp_enqueue_scriptshook ส่วนที่เกี่ยวข้องจะเป็นดังนี้: add_action('wp_enqueue_scripts', 'parent_theme_function_name'); function parent_theme_function_name() { wp_register_style( 'avia-style' , $child_theme_url."/style.css", array(), '2', 'all' ); wp_enqueue_style( 'avia-base'); if($child_theme_url != $template_url) { wp_enqueue_style( 'avia-style'); } } ชุดรูปแบบลูกของฉันจัดfunctions.phpคิวสไตล์ต่อการเปลี่ยนแปลง codex ล่าสุด: add_action( 'wp_enqueue_scripts', 'enqueue_parent_theme_style' ); function enqueue_parent_theme_style() { wp_enqueue_style( …

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