Chạy chức năng tùy chọn chủ đề SAU được lưu?


10

Câu hỏi kỳ lạ, làm thế nào tôi có thể chạy một chức năng tùy chỉnh SAU khi cài đặt chủ đề của tôi được lưu? Tôi thấy rằng hàm register_sinstall () có chức năng gọi lại vệ sinh, nhưng nó chạy trước khi thay đổi cài đặt. Tôi cần một cái gì đó để chạy sau khi chúng được lưu. Có một hành động hoặc bộ lọc tôi có thể sử dụng để làm điều đó?

BIÊN TẬP -

VÌ tôi có cài đặt này tôi đã thực hiện:

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 
);

và chức năng này:

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);

Câu trả lời:


18

Sử dụng bộ lọc update_option_{$option}. Nó chạy sau khi tiết kiệm thành công.

$option là tên của tùy chọn của bạn và bạn lấy giá trị cũ và mới làm tham số.

Từ wp-includes/option.php:

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

Sử dụng nó như thế này cho một tùy chọn wpse_themesettings:

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

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

Hừm, ok. Vì vậy, nếu tôi có hàng tá tùy chọn, trên hàng chục trang / nhóm tùy chọn tôi sẽ phải tạo một tùy chọn ẩn cho mỗi trang để chạy cùng một chức năng?
rugbert

Không, bạn chỉ cần sử dụng tên của các tùy chọn bạn muốn lưu. Không có tùy chọn ẩn thêm.
fuxia

vâng tôi nghĩ về điều đó trên đường đi làm và nói "duh"! Tuy nhiên, cảm ơn câu trả lời, bạn đã làm cho dự án của tôi tuyệt vời hơn 100%
rugbert

Này, chỉ để chúng tôi rõ ràng. Khi bạn nói sử dụng update_option {$ tùy chọn}, bạn có nghĩa là đối số $ page trong hàm register_sinstall () phải không? Vì vậy, giống như add_settings_field( $id, $title, $callback, $page, $section, $args ); hoặc là tên ID?
rugbert

Ngoài ra - tôi vừa thử cả hai và họ dường như không kích hoạt tùy chỉnh. Xem câu hỏi cập nhật của tôi cho mã tôi đã sử dụng
rugbert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.