web-dev-qa-db-fra.com

Règle de réécriture personnalisée pour backend/admin?

Je voudrais créer une règle de réécriture personnalisée qui prendra l'URL:

http://domain/submit-project/add

mais afficher

http://domain/wp/wp-admin/post-new.php?post_type=project

Y a-t-il un moyen de faire ça? J'essaie d'ajouter la règle de réécriture afin que dans le functions.php de mon thème

add_action( 'init', 'add_custom_rules' );

function add_custom_rules() {
  add_rewrite_rule(
    "^submit-project/add",  
        "/wp/wp-admin/post-new.php?post_type=project",  
        "top");
}

J'ai essayé de supprimer les règles, mais cela semble toujours entrer dans une sorte de boucle qui revient toujours à la page de "connexion".

Modifier

  1. L'URL est en fait juste 404-ing maintenant
  2. Je devrais ajouter que j’ai une page avec le slug submit-project et donc l’URL: http://domain.com/submit-project au cas où cela aurait de l’importance.
  3. J'ai installé le plugin Rewrite Rules Inspector et n'arrive pas à trouver ma règle.
1
waffl

En général, cela est possible, mais vous devez définir ADMIN_COOKIE_PATH dans votre wp-config.php avec la valeur /, ce qui pourrait entraîner des problèmes de sécurité.

Tout d’abord, définissez ces règles de réécriture dans votre .htaccess juste avant la règle de réécriture de wordpress:

# Make sure, there is a trailing slash
RewriteRule ^submit-project/add$ submit-project/add/ [R=301,L]
# mask the urls
RewriteRule ^submit-project/add/$ /wp/wp-admin/post-new.php [L,QSA]
RewriteRule ^submit-project/add/post.php?$ /wp/wp-admin/post.php [L,QSA]
# this is the wordpress rule:
RewriteRule . /index.php [L]

Maintenant, vous devez définir la constante dans le wp-config.php

define( 'ADMIN_COOKIE_PATH', '/' );

Je recommande de ne pas utiliser ceci sur un site productif. Envisagez d’offrir un formulaire d’entrée spécial dans le frontal en utilisant des codes abrégés ou quelque chose de moins invasif que l’exemple présenté.

4
David