Actuellement, je développe (bien au moins essayer;) un plugin qui gérera une galerie d'images personnalisée. Je suis tombé sur un problème cependant. Je vais essayer de l'imaginer.
J'ai créé une page de menu personnalisée sur laquelle je peux modifier les options de la galerie et ajouter/supprimer/modifier des éléments de la galerie. J'ai ajouté un lien à chaque élément de la galerie, donc après avoir choisi "modifier", je pouvais modifier un élément.
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) );
}
Le problème commence lorsque vous cliquez sur "modifier" sur l'élément. Il devrait rediriger vers la page des paramètres.
Ici j'ai une question. Quelle est la meilleure façon de procéder. Existe-t-il des fonctions auxiliaires/hooks/etc qui aideraient à créer une telle page (et à détecter la redirection).
Bien sûr, je pourrais le faire en fonction d’afficher les principales options de la galerie telles que:
if($_GET['action']=='edit')
//then do sth
else
//display main gallery options
mais je ne pense pas que ce soit la meilleure façon.
J'aimerais savoir quelles fonctions je pourrais utiliser, à partir de la création d'un lien personnalisé, de la création d'une page personnalisée et de leur enregistrement.
Quelle méthode doit être utilisée quand action = edit est déclenché. Comment le repérer était demandé sur la page même. Comment afficher ensuite la page liée au contenu.
wp-admin/options-general.php?page=rls_logotypes&action=edit&rls_element=element1
Obtenez l'URL d'une page d'administration spécifique (par exemple, la page des paramètres (options-general.php)):
admin_url( 'options-general.php' )
Ajout d'arguments de requête à une URL:
$params = array(
'page' => $_REQUEST['page'],
'action' => 'edit',
'rls_element' => $item['rls_name']
);
$url = add_query_arg( $params, $org_url );
Mettez a et b ensemble:
$params = array(
'page' => $_REQUEST['page'],
'action' => 'edit',
'rls_element' => $item['rls_name']
);
$url = add_query_arg( $params, admin_url( 'options-general.php' ) );
Maintenant nous pouvons créer des liens:
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'] );
}