Как перенаправить действие на пользовательскую страницу в разделе администратора

В настоящее время я разрабатываю (ну, по крайней мере, пытаюсь;) плагин, который будет обрабатывать собственную галерею изображений. Однако я наткнулся на одну проблему. Я постараюсь представить его.

Я создал пользовательскую страницу меню, на которой я могу редактировать параметры галереи, а также добавлять / удалять / редактировать элементы галереи. Я добавил ссылку на каждый элемент галереи, поэтому, выбрав «edit», я мог бы модифицировать элемент.

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) ); } 

Проблема начинается, когда нажимается «редактировать» на элементе. Он должен перенаправить на страницу настроек.

У меня есть вопрос. Каков наилучший способ сделать это. Существуют ли какие-либо вспомогательные функции / hooks / 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 

Получить URL-адрес определенной страницы администратора (например, страница настроек (options-general.php)):

 admin_url( 'options-general.php' ) 

Codex admin_url ()

Добавление аргументов запроса к URL-адресу:

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

Codex 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'] ); }