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

ชื่อของกิจกรรมที่ดำเนินการตามจุดเฉพาะทั่วทั้งแกน WordPress

5
after_setup_theme จะทำงานเสมอ
ฉันกำลังตั้งค่าชุดรูปแบบเด็กสำหรับอาจารย์ของฉันและเป็นส่วนหนึ่งของชุดรูปแบบฉันต้องการปลั๊กอินที่จะเปิดใช้งานได้ในเวลาที่เปิดใช้งานชุดรูปแบบ ดังนั้นโดยธรรมชาติฉันใช้การกระทำ after_setup_theme และเรียกว่าฟังก์ชั่นการตั้งค่าของฉัน มันใช้งานได้ดียกเว้นทำงานบนคำขอทุกคน (ผู้ดูแลระบบและอื่น ๆ ) ฉันพิสูจน์แล้วโดยเพิ่มสิ่งนี้ไปยังจุดสิ้นสุดของฟังก์ชั่นการตั้งค่า: echo '<script type="text/javascript">alert("This action was run")</script>'; และด้วยเหตุนี้จึงได้รับการแจ้งเตือนจาวาสคริปต์ในทุกคำขอของผู้ดูแลระบบและทุกคำขอของ front-end (ฉันมีการตั้งค่าเครือข่ายดังนั้นจึงเห็นได้ชัดบนเว็บไซต์ที่ชุดรูปแบบนี้ไม่ได้เปิดใช้งาน ดังนั้นคำถามคือนี่เป็นข้อผิดพลาดหรือไม่? ฉันกำลังทำอะไรผิดหรือเปล่า? นี่คือรหัสที่ฉันใช้: add_action( 'after_setup_theme', 'fwp_setup' ); function fwp_setup(){ // -- Unrelated code remove for the sake of brevity require_once($_SERVER['DOCUMENT_ROOT'].'/wp-admin/includes/plugin.php'); activate_plugin('enable-media-replace/enable-media-replace.php'); activate_plugin('seo-image/seo-friendly-images.php'); activate_plugin('w3-total-cache/w3-total-cache.php'); echo '<script type="text/javascript">alert("This action was run")</script>'; } ความเข้าใจใด ๆ …

4
มีตัวกรอง / ฮุกสำหรับการตรวจสอบความถูกต้องของฟิลด์ที่กำหนดเองก่อนเผยแพร่โพสต์หรือไม่?
xxxx_urlฉันได้เองยื่นเรียกว่า xxxx_urlควรจะไม่ซ้ำกัน ดังนั้นก่อนที่จะโพสต์โพสต์ฉันต้องการตรวจสอบให้แน่ใจว่าxxxx_urlมันไม่ซ้ำกันหรือไม่? หากไม่ซ้ำกันการโพสต์ควรถูกปฏิเสธ ฉันพยายามpublish_postแล้ว แต่นั่นไม่ใช่สิ่งที่ถูกต้องเนื่องจากมันจะทริกเกอร์เมื่อเราเผยแพร่โพสต์ ฉันต้องการเรียกใช้รหัสของฉันก่อนการเผยแพร่

2
วิธีการ do_action และรับค่าตอบแทน?
ดังนั้นจึงมีสถานการณ์ดังต่อไปนี้ ฉันเพิ่มการดำเนินการเพื่อล้างบันทึกจากฐานข้อมูล: add_action( 'myplugin_clean_logs', array( 'MyPlugin_Logs', 'clean_logs' ) ); ตอนนี้ฉันต้องการเรียกใช้การกระทำนี้เป็นระยะ: wp_schedule_event( current_time( 'timestamp' ), 'daily', 'myplugin_clean_logs' ); และดำเนินการด้วยตนเอง: do_action( 'myplugin_clean_logs' ); เมธอดMyPlugin_Logs::clean_logsจะส่งคืนจำนวนแถวที่ได้รับผลกระทบหรือเป็นเท็จหากมีสิ่งใดไปในทิศทางอื่น ตอนนี้ฉันต้องการแสดงจำนวนแถวที่ถูกลบไปแล้ว ฉันจะจินตนาการถึงสิ่งนี้: $affected_rows = do_action( 'myplugin_clean_logs' ); echo $affected_rows . ' entries have been deleted.'; แต่เนื่องจากdo_actionจะไม่คืนค่าใด ๆ ฉันไม่ทราบวิธีรับค่าตอบแทน ฉันควรรันเมธอดโดยตรงจากการเรียกใช้ด้วยตนเอง แต่ใช้การดำเนินการกับกำหนดการของเหตุการณ์หรือไม่
10 actions 

3
ลบการกระทำ / ตัวกรองเพิ่มผ่านฟังก์ชั่นที่ไม่ระบุชื่อ
นั่นเป็นวิธีปฏิบัติที่เลวร้ายที่ฉันต้องพูด ใช้เวลาสองชั่วโมงที่ผ่านมาในการค้นหาโซลูชันเพื่อลบการกระทำและตัวกรองที่เพิ่มผ่านฟังก์ชั่นนิรนาม นี่คือรหัสที่ใช้กับธีมผู้ปกครองและฉันจำเป็นต้องลบออก /** * Add custom columns to admin comments grid * * Rate that user set. */ add_filter( 'manage_edit-comments_columns', function( $default ) { $columns['smr_comment_rate'] = __( 'Rate', 'txtdmn' ); return array_slice( $default, 0, 3, true ) + $columns + array_slice( $default, 2, NULL, true ); }); ได้รับคำตอบของ toschoเล่นกับมันอย่างหนัก …

1
การใช้ jQuery เพื่อลบข้อมูลที่เก็บไว้ใน wp_options
ฉันสงสัยว่าใครสามารถให้คำแนะนำฉันเพิ่มเติมเกี่ยวกับปัญหาของฉัน ส่วนหนึ่งของปลั๊กอินของฉันเก็บไฟล์บันทึกสำหรับการดีบัก ฉันได้แสดงให้พวกเขาประสบความสำเร็จใน (div # log) ในหน้าผู้ดูแลระบบของฉันโดยใช้ jquery และ wp_localise_script ฉันมีปุ่มเพื่อลบบันทึกเหล่านี้ แต่ฉันไม่แน่ใจว่าจะดำเนินการอย่างไร ฉันมีความรู้สึกว่าอาแจ็กซ์อาจมีประโยชน์ที่นี่ แต่ไม่แน่ใจว่าจะเริ่มจากตรงไหน นี่คือส่วนที่เกี่ยวข้องในรหัสของฉัน: admin_enqueue_scripts (การกระทำ) $args = array(get_option('wow_tweets_log'));//log files fetched from wp_options table wp_enqueue_script('wow_tweet');//registered earlier on with jQuery dependency wp_localize_script('wow_tweet', 'wow_vars', $args); หน้าผู้ดูแลระบบ <tr><th scope="row"><strong>Debugging</strong></th><td> <div id="debug" class="button-primary">Debug</div><!--debug button shows logs--> <div id="hide_debug" class="button-secondary">Hide</div><!--debug button hides logs--> <div …
10 jquery  ajax  actions  options 

2
เมื่อใดควรใช้ add_action ('init') กับ add_action ('wp_enqueue_scripts')
ในฟังก์ชั่นของ theme.php ฉันกำลังเรียก add_action เพื่อให้สามารถวัดการควบคุมได้ว่าโหลด jquery ไว้ที่ไหน (ในส่วนท้ายพร้อมกับสคริปต์อื่น ๆ ของธีม) ปัญหาที่ฉันมีอยู่ก็คือเมื่อฉันใช้ add_action ('wp_enqueue_scripts') มันจะปรากฏขึ้นก็ต่อเมื่อไม่มีการโหลดปลั๊กอิน อย่างไรก็ตามวิธีการ add_action ('init') สามารถใช้งานได้ในทุกกรณี ฉันจำไม่ได้ว่าทำไม แต่ฉันเชื่อว่าเป็นที่ต้องการ add_action ('wp_enqueue_scripts') ในกรณีนี้ หากเป็นจริงฉันจะทำให้มันทำงานได้ในทุกกรณีได้อย่างไร ในฟังก์ชั่น //if(!is_admin()){add_action('init', 'my_theme_init');} //THIS WORKS ALL THE TIME //add_action('wp_enqueue_scripts', 'my_theme_init'); //THIS ONLY WORKS WHEN NO PLUGINS PRESENT if(!is_admin()) { require_once(TEMPLATEPATH . '/functions_public.php'); } ใน functions_public.php function …

1
wp_headers vs send_headers ใช้เมื่อใด?
ฉันเคยเห็นwp_headersและsend_headersทั้งคู่เคยใช้มาเพื่อสิ่งเดียวกันและฉันสงสัยว่าคุณควรจะรู้ว่าควรใช้อันไหนและเมื่อ ... บนsend_headersหน้า Codexมีตัวอย่างของการเพิ่มที่X-UA-Compatible: IE=edge,chrome=1สำหรับ Internet Explorer กันได้ย้อนหลังตั้งแต่เมตาแท็กมักจะล้มเหลวบนไซต์อินทราเน็ตถ้าโหลดสายเกินไป นี่คือsend_headersตัวอย่างที่มีลักษณะ: add_action( 'send_headers', 'add_header_xua' ); function add_header_xua() { header( 'X-UA-Compatible: IE=edge,chrome=1' ); } อย่างไรก็ตามwp_headersยังสามารถทำสิ่งนี้: apply_filters ( 'wp_headers', array $headers, WP $this ) add_filter( 'wp_headers', 'wpieeam_headers' ); function wpieeam_headers($headers) { if (!is_admin()) { $headers['X-UA-Compatible'] = 'IE=edge,chrome=1'; } return $headers; } อัปเดต:จริง ๆ แล้วฉันเพิ่งสังเกตเห็นว่าการสนทนาในเรื่องนี้เริ่มต้นจากคำถามที่คล้ายกันเมื่อสองสามปีก่อน …

2
ฉันควรดำเนินการอย่างไรเมื่อเพิ่มบทบาทและความสามารถ
ฉันจะใช้ add_role () และ $ role-> add_cap () เพื่อตั้งค่าบทบาทที่กำหนดเองใหม่และแนบความสามารถใหม่กับบทบาทที่มีอยู่ ฉันสงสัยว่าที่ที่ดีที่สุดในการทำเช่นนี้คืออะไร? เห็นได้ชัดว่าฉันสามารถทำมันได้โดยตรงในฟังก์ชั่น PHP และสามารถทำได้ด้วย แต่นี่เป็นวิธีปฏิบัติที่ดีที่สุดใช่ไหม ฉันต้องทำสิ่งนี้กับ admin_init หรือไม่ หรือฉันควรจะทำใน init? ฉันไม่แน่ใจทั้งหมดว่าแนวทางปฏิบัติที่ดีที่สุดคืออะไรโดยใช้ init action hooks แทนที่จะปล่อยให้การเรียกใช้ฟังก์ชันโดยตรงภายใน functions.php ขอบคุณสำหรับข้อมูลของคุณ!

3
ฟังก์ชั่นเพื่อดำเนินการเมื่อโพสต์ถูกย้ายไปที่ถังขยะ
สวัสดีมีการดำเนินการที่สามารถทำได้ในขณะที่โพสต์ถูกย้ายไปที่ถังขยะ .... ฉันลอง delete_post และ delete_post มันใช้งานได้ แต่สองครั้งสำหรับแต่ละการกระทำ (ก่อนและหลังการกระทำตามที่เขียนไว้ใน codex) และเอาต์พุตจะแสดงเฉพาะเมื่อโพสต์ถูกลบออกจากถังขยะ ตัวอย่างฉันต้องการส่งอีเมลถึงผู้เขียนโดยระบุว่าโพสต์ของเขาถูกย้ายไปที่ถังขยะเนื่องจากเหตุผลบางประการและอัปเดต user_meta บางส่วน ถ้าฉันใช้ add_action('deleted_post', 'emailUser'); หรือ add_action('delete_post', 'emailUser'); มันจะทำงานเฉพาะเมื่อโพสต์ถูกลบออกจากถังขยะ . . อัปเดต: นำมาใช้เพื่อโพสต์ถังขยะโดยใช้ add_action('trash_post', 'emailUser'); แต่ปัญหาสำหรับการเรียกใช้ฟังก์ชันสองครั้งยังคงมีอยู่ . .

10
ลบการกระทำออกจาก Class ภายนอก
ฉันพยายามทำสิ่งที่คล้ายกับคำถามนี้ที่นี่: remove_action หรือ remove_filter กับคลาสภายนอก? ฉันกำลังพยายามลบ <!-- This site is optimized with the Yoast WordPress SEO plugin v1.0.3 - http;//yoast.com/wordpress/seo/ --> ข้อความจากปลั๊กอิน และก่อนที่คุณจะตะโกนใส่ฉันเกี่ยวกับวิธีการที่อาจผิดจรรยาบรรณผู้เขียนบอกว่ามันโอเคที่จะทำที่นี่: http://wordpress.org/support/topic/plugin-wordpress-seo-by-yoast-how-to-remove- อันตราย -inserted-Yoast ข้อความในหน้าเว็บส่วนหัว? ตอบกลับ = 29 # โพสต์ 2503475 ฉันพบคลาสที่เพิ่มความคิดเห็นที่นี่: http://plugins.svn.wordpress.org/wordpress-seo/tags/1.2.8.7/frontend/class-frontend.php พื้นWPSEO_Frontendชั้นจะมีฟังก์ชั่นที่มีชื่อdebug_markerแล้วจะถูกเรียกโดยฟังก์ชั่นที่มีชื่อheadที่จะถูกเพิ่มไปแล้วwp_headใน__Construct ฉันยังใหม่กับการเรียน แต่ฉันพบวิธีที่จะกำจัดศีรษะโดยการทำ global $wpseo_front; remove_action( 'wp_head', array($wpseo_front,'head'), 1, 1 ); แต่ฉันต้องการลบชิ้นdebug_markerส่วนออกเท่านั้น ฉันลองสิ่งนี้ แต่มันก็ไม่ได้ผล remove_action( …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.