테마 옵션 후에 실행 기능이 저장됩니까?


10

이상한 질문, 테마 설정을 저장 한 후에 어떻게 사용자 정의 기능을 실행할 수 있습니까? register_settings () 함수에 살균 콜백이 있지만 설정이 변경되기 전에 실행됩니다. 그들이 저장된 후에 실행할 것이 필요합니다. 이를 수행하기 위해 사용할 수있는 조치 또는 필터가 있습니까?

편집하다 -

그래서 나는이 설정을했습니다.

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

그래, 나는 출근길에 그 생각을하고 "어"라고 말했다! 답변 주셔서 감사합니다, 당신은 내 프로젝트를 100 % 더 멋지게 만들었습니다
rugbert

이봐, 우리는 분명하다. update_option {$ option}을 사용할 때 register_settings () 함수에서 $ page 인수를 의미합니까? 과 같이 add_settings_field( $id, $title, $callback, $page, $section, $args ); 아니면은 ID 이름입니까?
rugbert

또한-나는 방금 두 가지를 시도했지만 그들은 관습을 해치지 않는 것 같습니다. 내가 사용한 코드에 대한 업데이트 된 질문을 참조하십시오
rugbert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.