Как мне отправить данные в плагин WordPress? - PullRequest
3 голосов
/ 22 августа 2011

Я хочу создать плагин WordPress, который может перехватывать POST / GET-запросы к определенному URL извне, чтобы я мог иметь внешний POST-код PHP-данных для плагина WordPress, который плагин затем может обрабатывать внутри.*

Я не хочу создавать посты в блогах или страницы извне, я знаю, что для этого существует интерфейс XML-RPC.Я говорю о публикации данных извне в WordPress и последующей их обработке в плагине.

Я думаю, я мог бы также напрямую подключиться к БД WP, но это, вероятно, не очень чистое решение и может сломаться, еслиЯ обновляю WP.

Ответы [ 2 ]

3 голосов
/ 22 августа 2011

Как вы уже знаете о WordPress XMRPC: ваш плагин может зарегистрировать собственные функции для XMLRPC, которые затем прослушивают запрос. Затем вы можете отправить запрос POST к конечной точке XMLRPC, и тогда будет запущена функция плагина.

Следующий пример кода представляет собой простой класс плагина, который регистрирует функцию в конечной точке XMLRPC my.recieve. Он показывает, как функция обратного вызова зарегистрирована в этой строке:

/**
 * XML RPC Plugin
 */
return RecievePostPlugin::bootstrap();

class RecievePostPlugin
{
    private static $instance;
    public static function bootstrap()
    {
        if (null === $this->instance)
             $this->instance = new __CLASS__;
        return $this->instance; 
    }
    public function __construct()
    {
        add_filter('xmlrpc_methods', array($this, 'addXMLRPCActions'));
    }
    public function addXMLRPCActions(array $methods)
    {
        $methods['my.recieve'] = array($this, 'recieveXMLRPCAction');
        return $methods;
    }
    public function recieveXMLRPCAction(array $arguments)
    {
       // your code here, POST can be accessed via $_POST
    }
}

Если вам не нравятся накладные расходы XMLRPC, вы можете просто создать PHP-часть файла вашего плагина и запросить его. Затем вам нужно позаботиться о том, чтобы загрузить все функции WP, которые вы, возможно, захотите использовать (например, доступ к базе данных и т. Д.).

0 голосов
/ 22 августа 2011

Вы можете создать правило перезаписи, перенаправив какой-нибудь причудливый красивый URL-адрес в файл в каталоге вашего плагина. И этот файл будет иметь данные $ _POST. Со страницы Wordpress , описывающей WP_Rewrite:

function feed_dir_rewrite( $wp_rewrite ) {
    $feed_rules = array(
        'index.rdf' => 'index.php?feed=rdf',
        'index.xml' => 'index.php?feed=rss2',
        '(.+).xml' => 'index.php?feed=' . $wp_rewrite->preg_index(1)
    );

    $wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}

// Hook in.
add_filter( 'generate_rewrite_rules', 'feed_dir_rewrite' );
...