Как сделать Http-запрос к php-файлу, присутствующему в каталоге плагинов wordpress


Я новичок в разработке плагинов wordpress, и я разрабатываю плагин (скажем, myplugin), и я застрял в следующей проблеме.

Я сохранил этот плагин в mywebsite/wp-content/плагин/myplugin

Внутри каталога myplugin у меня есть 2 файла следующим образом

  1. myplugin.php
  2. registration.php

Теперь я хочу сделать запрос http post выше registration.php из мобильного приложения. Когда я отправил почтовый запрос на http://mywebsite/wp-content/plugin/myplugin/registration.php всегда говорится, что файл не найден. Как я могу сделать запрос..

Это неправильный способ сделать. Если да, то может ли кто-нибудь помочь мне, как это сделать...

Любая помощь приветствуется.

Author: Harish_N, 2015-07-25

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
 1
Author: Adam, 2015-07-25 10:13:30