web-dev-qa-db-fra.com

Quelle est l'URL d'action de formulaire correcte pour les pages d'options réseau?

Référence à API de paramètres dans multisite - Message de mise à jour manquant

Il est écrit que:

Pour les pages d'option réseau, l'URL d'action de formulaire correcte est la suivante:

wp-admin/network/edit.php? action = votre_nom_option

Note: sans '/' devant

D'accord. Essayons:

<form method="post" action="wp-admin/network/edit.php?action=your_option_page">

Évidemment, mon formulaire d’options est effectivement soumis à:

http://votredomaine.com/wp-admin/network/wp-admin/network/edit.php?action=your_option_page

Maintenant, ajoutez un '/' devant:

<form method="post" action="/wp-admin/network/edit.php?action=your_option_page">

Envoie le formulaire (correctement) à:

http://votredomaine.com/wp-admin/network/edit.php?action=votre_option_page

C'est vrai dans la plupart des cas, je pense?

Cependant, certains utilisateurs de mon plugin m'ont fait savoir qu'ils l'obtenaient lorsqu'ils soumettaient le formulaire d'options:

Introuvable L'URL demandée /wp-admin/network/edit.php est introuvable sur ce serveur.

Cela est-il dû à une configuration de serveur incorrecte pour cet utilisateur, ou devrais-je réellement m'en tenir à l'URL d'action de formulaire suivante pour le faire fonctionner avec des chemins d'accès différents:

<form method="post" action="edit.php?action=your_option_page">

Le formulaire est toujours soumis à l'URL correcte:

http://votredomaine.com/wp-admin/network/edit.php?page=votre_option_page

Est-ce que cette dernière URL d'action de formulaire fonctionnerait dans tous les chemins d'installation pris en charge par wordpress? (avec sous-domaines, chemins de répertoire, etc.). Qu'en est-il des différents serveurs Web: Apache, Nginx, IIS

votredomaine.com votredomaine.com/wordpress/sousdomaine.votredomaine.com sousdomaine/votredomaine.com/wordpress /

2
jgangso

Lorsque vous faites référence à des URL dans l’administrateur réseau, vous devez considérer la fonction network_admin_url(). fonction principale, qui retourne à admin_url() pour les configurations non multisites.

Essayez donc ceci en utilisant add_query_arg comme @toscho utilise dans la réponse du lien OP vers:

echo esc_url( 
    add_query_arg( 
       'action', 
       'your_option_name', 
       network_admin_url( 'edit.php' ) 
    ) 
);

au lieu de le coder en dur avec de possibles hypothèses erronées sur le chemin d'installation.

Ici, nous échappons à la sortie pour l'utiliser dans l'attribut d'action HTML.

2
birgire