5

すべて正しく機能する add_menu_page を使用してメニューを追加しましたが、クリックすると、このメニュー ページで特定の投稿 ID の投稿エディターを開く必要があります。

概念実証として、私はJavaScriptのリダイレクトをdo関数にエコーアウトしようとしました...

// Load up the menu page
 function register_availability_custom_menu_page() {
   add_menu_page('custom menu title', 'Availability', 'add_users', 'options',             'options_do_page');
}

function options_do_page() {
echo "<script type=\"text/javascript\">";
echo "window.location = '/whatever_page.php';";
echo "</script>";
}

このアプローチは機能しますが、それが最善のアプローチであるかどうか疑問に思っていました。私が求めているページにリダイレクトするより良い方法はありますか?

アップデート

このコードで wp_redirect を使用してみました...

add_action( 'admin_menu' , 'admin_menu_new_items' );

function admin_menu_new_items() {
    wp_redirect( home_url() );
    exit;
}

これにより、ヘッダーが既に送信されたというエラーが表示されます。どこが間違っているのか誰でも提案できますか?

4

3 に答える 3

0

JS/JQ を使用しない 2 ステップのソリューションを見つけました。

ステップ 1:
スクリプトの先頭近くに、次の PHP を配置して、最初のページを非表示にする CSS を表示します。

add_action('admin_head', 'hide_my_first_page');

function hide_my_first_page(){
    echo '<style>
        a[href="admin.php?page=admin_menu_slug"] + ul > li.wp-first-item{
            display: none;
        }
    </style>';
}

admin_menu_slugに渡される 4 番目の引数はどこにありますかadd_menu_page();

ステップ 2:
実行したいページの関数を取得し、それを 5 番目の引数として渡しますadd_menu_page();

于 2013-08-13T18:43:07.643 に答える
0

最近pootle page builderに対してこれを行いましたが、この AFAIK が最良の方法です。

/**
 * Redirecting from Page Builder > Add New page
 * @since 0.1.0
 */
function add_new() {
    global $pagenow;

    if ( 'admin.php' == $pagenow && 'page_builder_add' == filter_input( INPUT_GET, 'page' ) ) {
        header( 'Location: ' . admin_url( 'whatever-page.php' ) );
        die();
    }
}
add_action( 'admin_init', 'add_new' );

page_builder_addページ スラッグとadmin_url( 'whatever-page.php' )リダイレクト先の URL に置き換えます。

私たちは常にコードのベスト プラクティスに scrutinizer-ci を使用し、9.5/10 を超えるコード スコアを維持しているため、すべてのコード (これを含む) は安全で最適化されています ;)

それがどのように機能するかを教えてください。

乾杯

于 2015-10-14T05:00:23.160 に答える