web-dev-qa-db-ja.com

管理セクション内のカスタムページのアクションにリダイレクトする方法

現在私は(少なくとも少なくともしようとしている)画像のカスタムギャラリーを処理するプラグインを開発しています。しかし私は一つの問題につまずいた。私はそれを描こうとします。

私は私がギャラリーの要素を追加/削除/編集することができるのと同様に私がギャラリーオプションを編集できるカスタムメニューページを作成しました。すべてのギャラリーアイテムへのリンクを追加したので、[編集]を選択した後で要素を変更できるようになりました。

function column_rls_name($item) {
  $actions = array(
            'edit'      => sprintf('<a href="?page=%s&action=%s&rls_element=%s">Edit</a>',$_REQUEST['page'],'edit',$item['rls_name']),
        );
  return sprintf('%1$s %2$s', $item['rls_name'], $this->row_actions($actions) );
}

要素の「編集」をクリックすると問題が始まります。設定ページにリダイレクトするはずです。

ここで質問があります。これを行うための最良の方法は何ですか。そのようなページを作成するのに役立つ(そしてリダイレクトを検出する)ヘルパー関数/フック/ etcがそこにあるか。

もちろん、私は以下のような主要なギャラリーオプションを表示する役割を担う機能でそれをすることができました:

if($_GET['action']=='edit')
    //then do sth
else
    //display main gallery options

しかし、私はそれが最善の方法だとは思わない。

カスタムリンクの作成、カスタムページの作成、およびそれらの登録から、使用できる機能を知りたいのですが。

Action = editがトリガーされたときに使用するメソッド実際のページでそれを見つける方法は要求されました。コンテンツに関連するページを表示する方法.

wp-admin/options-general.php?page=rls_logotypes&action=edit&rls_element=element1
2
dfens

特定の管理ページのURLを取得します(例:設定ページ(options-general.php))。

admin_url( 'options-general.php' )

コーデックスadmin_url()

URLにクエリ引数を追加する:

$params = array(
    'page'          => $_REQUEST['page'],
    'action'        => 'edit',
    'rls_element'   => $item['rls_name']
);

$url = add_query_arg( $params, $org_url );

コーデックスadd_query_arg()

Aとbをまとめる:

$params = array(
    'page'          => $_REQUEST['page'],
    'action'        => 'edit',
    'rls_element'   => $item['rls_name']
);

$url = add_query_arg( $params, admin_url( 'options-general.php' ) );

これでリンクを作成できます。

public function column_rls_name( $item ){

    $actions = array(
    'edit'  => $this->create_admin_link(
                        array(
                            'text'      => 'Edit',
                            'action'    => 'edit',
                            'item'      => $item['rls_name']
                        )
                )
    );

    return sprintf( '%1$s %2$s', $item['rls_name'], $this->row_actions( $actions ) );

}

public function create_admin_link( $args = array() ){

    $params = array(
        'page'          => $_REQUEST['page'],
        'action'        => $args['action'],
        'rls_element'   => $args['item']
    );

    $url = add_query_arg( $params, admin_url( 'options-general.php' ) );

    return sprintf( '<a href="%s">%s</a>', $url, $args['text'] );

}
1
Ralf912