나는 내 자신의 플러그인을 만들었습니다. 모든 것이 괜찮아 보이지만 플러그인이 활성화되면 플러그인에서 수행하려는 한 가지 기능이 해당 플러그인 설정 페이지로 리디렉션됩니다.
예를 들면 다음과 같습니다.
http://www.example.com/wordpress/wp-admin/options-general.php?page=rotator
활성화시 해당 페이지로 리디렉션하는 방법이 register_activation_hook
있습니까 ( 예 : ?
답변
아마도 wp_redirect()
활성화 훅 의 기능을 사용하고있을 것입니다. 다음 예 myplugin_settings
는 자리 표시 자입니다. 일반적으로 이것은 단순히 비슷한 기능 $hook_suffix
에서 돌아 오는 $hook_suffix = add_menu_page( /* etc. */ );
것입니다.
이 코드는 작동하지 않습니다. 아래를 읽으십시오
register_activation_hook(__FILE__, 'cyb_activation');
function cyb_activation()
{
// Don't forget to exit() because wp_redirect doesn't exit automatically
exit( wp_redirect( admin_url( 'options-general.php?page=myplugin_settings' ) ) );
}
참고 문헌 :
편집하다
활성화 훅 내부의 리디렉션은 플러그인이 효과적으로 활성화되기 전에 수행되는 것으로 보입니다. 활성화가 실행되기 전에 exit () 호출 때문일 수 있습니다. 이 코드는 사용하여 잘 작동하는 것 같다 activated_plugin 액션 hoook :
function cyb_activation_redirect( $plugin ) {
if( $plugin == plugin_basename( __FILE__ ) ) {
exit( wp_redirect( admin_url( 'options-general.php' ) ) );
}
}
add_action( 'activated_plugin', 'cyb_activation_redirect' );
기본 플러그인 파일 외부에서이 코드를 사용하는 경우 기본 플러그인 파일의 __FILE__
경로 를 다시 채워야 합니다.
생각
플러그인이 활성화 된 후 사용자를 리디렉션하는 것은 좋은 방법이 아닙니다. WordPress에서는 플러그인을 일괄 적으로 활성화 할 수 있습니다. 이 상황에서 리디렉션을 수행하면 어떻게됩니까? 플러그인이 마지막으로 활성화 된 경우가 아니라면 일부 플러그인의 활성화가 중단 될 수 있지만 사용자 환경이 손상 될 수 있습니다.
답변
다음과 같이 할 수 있어야합니다.
register_activation_hook(__FILE__, 'my_plugin_activate');
add_action('admin_init', 'my_plugin_redirect');
function my_plugin_activate() {
add_option('my_plugin_do_activation_redirect', true);
}
// Solution 1
function my_plugin_redirect() {
if (get_option('my_plugin_do_activation_redirect', false)) {
delete_option('my_plugin_do_activation_redirect');
wp_redirect("options-general.php?page=rotator");
//wp_redirect() does not exit automatically and should almost always be followed by exit.
exit;
}
}
// OR
//Solution 2 (@kaiser suggestion)
function my_plugin_redirect() {
if (get_option('my_plugin_do_activation_redirect', false)) {
delete_option('my_plugin_do_activation_redirect');
exit( wp_redirect("options-general.php?page=rotator") );
}
}
최신 정보
인라인 주석 인 경우에도 다음을 기억하십시오.
wp_redirect () 는 자동으로 종료되지 않으며 거의 항상 종료해야합니다.
구체적인 예
<?php
wp_redirect( $location, $status );
exit;
?>
2013 년 10 월 29 일 업데이트
언급되지 않았지만 내 솔루션은 플러그인 설정 페이지로 리디렉션할지 여부를 확인할 수있는 기능을 제공합니다. 에서 my_plugin_activate
및 if 조건을 확인하십시오 my_plugin_redirect
.
그것이 도움이되기를 바랍니다!
답변
안녕하세요, 플러그인 활성화 후 벨로우즈 코드 리디렉션을 사용했습니다. 이 코드를 사용할 수 있습니다. 잘 작동하고 있습니다.
register_activation_hook(__FILE__, 'nht_plugin_activate');
add_action('admin_init', 'nht_plugin_redirect');
function nht_plugin_activate() {
add_option('nht_plugin_do_activation_redirect', true);
}
function nht_plugin_redirect() {
if (get_option('nht_plugin_do_activation_redirect', false)) {
delete_option('nht_plugin_do_activation_redirect');
if(!isset($_GET['activate-multi']))
{
wp_redirect("edit.php?post_type=headline&page=news-headline");
}
}
}