Как сделать Http-запрос к php-файлу, присутствующему в каталоге плагинов wordpress
Я новичок в разработке плагинов wordpress, и я разрабатываю плагин (скажем, myplugin), и я застрял в следующей проблеме.
Я сохранил этот плагин в mywebsite/wp-content/плагин/myplugin
Внутри каталога myplugin у меня есть 2 файла следующим образом
- myplugin.php
- registration.php
Теперь я хочу сделать запрос http post выше registration.php из мобильного приложения. Когда я отправил почтовый запрос на http://mywebsite/wp-content/plugin/myplugin/registration.php всегда говорится, что файл не найден. Как я могу сделать запрос..
Это неправильный способ сделать. Если да, то может ли кто-нибудь помочь мне, как это сделать...
Любая помощь приветствуется.
1 answers
Вот быстрый и грязный плагин, который показывает вам, как этого добиться (адаптируйте этот пример к вашей собственной архитектуре и потребностям):
<?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
Преимущество добавления внутреннего правила перезаписи WordPress заключается в том, что внешний заключается в том, что среда WordPress будет доступна вам в вашем файле registration.php
, поэтому, например, если вам нужно изменить или извлечь данные из базы данных, вы можете.
Пример внутри вашего файла 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