เรียกใช้ฟังก์ชั่นตัวเลือกชุดรูปแบบหลังจากที่บันทึกไว้?


10

คำถามแปลก ๆ ฉันจะรันฟังก์ชั่นที่กำหนดเองได้อย่างไรหลังจากการตั้งค่าธีมของฉันถูกบันทึกไว้? ฉันเห็นว่าฟังก์ชั่น register_settings () มีการโทรกลับ sanitize แต่ที่ทำงานก่อนที่จะมีการเปลี่ยนแปลงการตั้งค่า ฉันต้องการบางสิ่งบางอย่างที่จะทำงานหลังจากที่พวกเขาได้รับการบันทึก มีการกระทำหรือตัวกรองที่ฉันสามารถใช้เพื่อทำสิ่งนั้นได้หรือไม่?

แก้ไข -

ดังนั้นฉันมีการตั้งค่านี้ฉันได้ทำ:

add_settings_section(
    'kjd_body_background_settings_section', // ID hook name
    null, // label
    null, // function name
    'kjd_body_background_settings' // page name
);


    add_settings_field(
        'kjd_body_background_colors', // ID hook name
        null, //label
        null, //callback
        'kjd_body_background_settings', // page name
        'kjd_body_background_settings_section' // parent section 
);

และฟังก์ชั่นนี้:

function kjd_update_stylesheet( $oldvalue, $_newvalue ){
   echo 'updated!';
   die();
}
add_action('update_options_kjd_body_background_settings','kjd_update_stylesheet',10, 2);

//add_action('update_options_kjd_body_background_colors','kjd_update_stylesheet',10, 2);

คำตอบ:


18

update_option_{$option}ใช้ตัวกรอง มันทำงานหลังจากการบันทึกที่ประสบความสำเร็จ

$option เป็นชื่อตัวเลือกของคุณและคุณจะได้รับค่าเก่าและค่าใหม่เป็นพารามิเตอร์

จากwp-includes/option.php:

do_action( "update_option_{$option}", $oldvalue, $_newvalue );

ใช้แบบนี้เพื่อตัวเลือกwpse_themesettings:

add_action( 'update_option_wpse_themesettings', 'wpse_check_settings', 10, 2 );

function wpse_check_settings( $old_value, $new_value )
{
    // do something
}

อืมโอเค ดังนั้นถ้าฉันมีตัวเลือกมากมายตัวเลือกมากกว่าสิบหน้า / กลุ่มตัวเลือกฉันจะต้องสร้างตัวเลือกที่ซ่อนอยู่สำหรับแต่ละหน้าเพื่อเรียกใช้ฟังก์ชันเดียวกันหรือไม่
rugbert

ไม่คุณเพียงแค่ใช้ชื่อของตัวเลือกที่คุณต้องการบันทึก ไม่มีตัวเลือกที่ซ่อนอยู่เป็นพิเศษ
fuxia

ใช่ฉันคิดถึงสิ่งนั้นระหว่างเดินทางไปทำงานและพูดว่า "duh"! ขอบคุณสำหรับคำตอบแม้ว่าคุณจะทำให้โครงการของฉันยอดเยี่ยมขึ้น 100%
rugbert

เฮ้เราแค่เคลียร์ เมื่อคุณพูดว่าใช้ update_option {$ option} คุณหมายถึงอาร์กิวเมนต์ $ page ในฟังก์ชั่น register_settings () ใช่ไหม? เช่นนั้น add_settings_field( $id, $title, $callback, $page, $section, $args ); หรือมันเป็นชื่อ ID?
rugbert

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