카테고리 보관물: wordpress

wordpress

플러그인이 활성화되면 설정 페이지로 리디렉션하는 방법은 무엇입니까? 한 가지 기능이 해당 플러그인 설정

나는 내 자신의 플러그인을 만들었습니다. 모든 것이 괜찮아 보이지만 플러그인이 활성화되면 플러그인에서 수행하려는 한 가지 기능이 해당 플러그인 설정 페이지로 리디렉션됩니다.

예를 들면 다음과 같습니다.
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' ) ) );
}

참고 문헌 :

  1. 활성화 훅 등록
  2. admin_url ()

편집하다

활성화 훅 내부의 리디렉션은 플러그인이 효과적으로 활성화되기 전에 수행되는 것으로 보입니다. 활성화가 실행되기 전에 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");
    }
 }
}

답변