ฉันเพื่อตัวเองใช้การรวมกันของ:
- หนึ่งไฟล์ที่อุทิศให้กับสคริปต์ครั้งเดียว
- ใช้ชั่วคราวเพื่อหยุดสคริปต์จากการทำงานมากกว่าหนึ่งครั้งโดยไม่ตั้งใจ
- ใช้การจัดการความสามารถหรือการควบคุมผู้ใช้เพื่อให้แน่ใจว่าสคริปต์นั้นถูกเรียกใช้โดยฉัน
โครงสร้าง
ฉันใช้ไฟล์ ( onetime.php
) ในโฟลเดอร์รวมของฉันinc
ซึ่งรวมอยู่ในfunctions.php
และลบออกจากที่นั่นหลังจากใช้งาน
include( 'inc/onetime.php' );
ไฟล์สำหรับสคริปต์นั้น
ในการonetime.php
ทำงานของฉันของฉันf711_my_onetime_function()
ถูกวางไว้ มันอาจเป็นฟังก์ชั่นใด ๆ ฉันถือว่าสคริปต์ของคุณผ่านการทดสอบและทำงานอย่างถูกต้อง
เพื่อให้การควบคุมการทำงานของสคริปต์สำเร็จฉันใช้ทั้งสองอย่าง
การควบคุมความสามารถ
วิธีหยุดผู้ใช้รายอื่นไม่ให้เรียกใช้สคริปต์โดยไม่ตั้งใจ:
if ( current_user_can( 'manage_options' ) ) // check for administrator rights
หรือ
if ( get_current_user_id() == 711 ) // check if it is me - I prefer restricting the execution to me, not to all admins.
ชั่วคราว
เพื่อหยุดตัวเองจากการรันสคริปต์โดยไม่ตั้งใจมากกว่าหนึ่งครั้ง
$transient = 'f711_my_onetime_check';
if ( !get_transient( $transient ) ) // check if the function was not executed.
ไฟล์สำหรับรันสคริปต์ในฟังก์ชั่นของฉันf711_my_onetime_function()
จะเป็นดังนี้:
$transient = 'f711_my_onetime_check';
if ( get_current_user_id() == 711 && !get_transient( $transient ) ) {
set_transient( $transient, 'locked', 600 ); // lock function for 10 Minutes
add_action( 'wp_footer', 'f711_my_onetime_function' ); // execute my function on the desired hook.
}
function f711_my_onetime_function() {
// all my glorious one-time-magic.
}
เหตุผลที่ฉันตั้งค่า transient ทันทีหลังจากตรวจสอบหากมีอยู่นั่นคือฉันต้องการให้เรียกใช้ฟังก์ชันหลังจากสคริปต์ถูกล็อกจาก beeing ใช้สองครั้ง
หากฉันต้องการผลงานใด ๆ จากฟังก์ชั่นของฉันฉันจะพิมพ์มันออกมาเป็นความคิดเห็นในส่วนท้ายหรือบางครั้งฉันก็กรองเนื้อหา
lockouttime ตั้งไว้ที่ 10 นาที แต่สามารถปรับได้ตามความต้องการของคุณ
ทำความสะอาด
หลังจากการดำเนินการที่ประสบความสำเร็จของสคริปต์ของฉันฉันลบinclude
จากfunctions.php
และลบออกonetime.php
จากเซิร์ฟเวอร์ ขณะที่ฉันใช้การหมดเวลาใช้งานชั่วคราวฉันไม่จำเป็นต้องทำความสะอาดฐานข้อมูล แต่แน่นอนว่าคุณสามารถลบชั่วคราวได้หลังจากที่คุณลบไฟล์