Je suis nouveau dans le développement de plugins wordpress et je développe un plugin (disons myplugin) et je suis coincé dans le problème suivant.
J'avais gardé ce plugin dans mywebsite/wp-content/plugin/myplugin
Dans le répertoire myplugin, j'ai 2 fichiers comme suit
Maintenant, je veux faire une demande de post http à ci-dessus registration.php à partir de l'application mobile. Lorsque j'ai envoyé une demande à http: //mywebsite/wp-content/plugin/myplugin/registration.php , le fichier est toujours introuvable. Comment puis-je faire une demande ..
Est-ce une mauvaise façon de faire. Si tel est le cas, quelqu'un peut-il m'aider à le faire ...
Toute aide est appréciée.
Voici un plugin rapide et sale qui vous montre comment y parvenir (adaptez cet exemple à votre propre architecture et à vos besoins):
<?php
/*
Plugin Name: Custom rewrite rule test
*/
add_action(
'plugins_loaded',
array(Registration::get_instance(), 'setup')
);
class Registration {
protected static $instance = NULL;
public function __construct() {}
public static function get_instance() {
NULL === self::$instance and self::$instance = new self;
return self::$instance;
}
public function setup() {
add_action('init', array($this, 'rewrite_rules'));
add_filter('query_vars', array($this, 'query_vars'), 10, 1);
add_action('parse_request', array($this, 'parse_request'), 10, 1);
register_activation_hook(__FILE__, array($this, 'flush_rules' ));
}
public function rewrite_rules(){
add_rewrite_rule('registration/?$', 'index.php?registration=true', 'top');
}
public function flush_rules(){
$this->rewrite_rules();
flush_rewrite_rules();
}
public function query_vars($vars){
$vars[] = 'registration';
return $vars;
}
public function parse_request($wp){
if ( array_key_exists( 'registration', $wp->query_vars ) ){
include plugin_dir_path(__FILE__) . 'registration.php';
exit();
}
}
}
add_rewrite_rule()
registration.php
L’avantage d’ajouter une règle de réécriture WordPress interne interne n’est pas préférable à une règle externe, c’est que l’environnement WordPress sera disponible dans votre fichier registration.php
, par exemple si vous devez modifier ou récupérer des données de la base de données que vous pouvez.
Exemple dans votre fichier registration.php
:
<?php
global $wp, $wpdb;
//get query variable: index.php?registration=true
var_dump($wp->query_vars['registration']); //true
//check if user is logged in
if ( is_user_logged_in() ) {
//use $wpdb to get results from database etc
}
//do your registration business logic here etc