使用WordPress运行silex或slm

时间:2016-08-26 作者:Prashant Gaur

我正在WordPress上运行一个主题。在这个主题中,我正在进行一些AJAX调用,希望得到一些响应。(http://example.com/capis/v0/packages/)

为了提供上述http调用,我使用silex作为http服务器。

指数php

<?php
require_once __DIR__ . \'/vendor/autoload.php\';

use Symfony\\Component\\HttpFoundation\\Request;
use Symfony\\Component\\HttpFoundation\\Response;
use Silex\\Application;

$app = new Silex\\Application();

$app->POST(\'/capis/v0/packages/\', function(Application $app, Request $request) {
            # logic            
            return new Response(\'HELLO\');
            });
$app->run();
我正在使用php在8080端口上运行一个服务器,该服务器为ajax调用提供数据。

php -S localhost:8080 -t web web/index.php
现在我只想使用WordPress来提供这些Ajax调用。我不想运行特定的php服务器。

1 个回复
SO网友:Mark Cicchetti

对于不能通过Wordpress完成的Silex服务器,您可以做的很少,但要让WP响应AJAX调用需要一些努力。

第一步是通过AJAX使调用可用。这需要在函数中添加一行。php文件类似于

add_action(\'wp_ajax_my_ajax_call\', \'onno_update_my_ajax_call\');
如果要为客人和客户(即非管理员)拨打此电话,您还需要该线路。

add_action(\'wp_ajax_nopriv_my_ajax_call\', \'my_ajax_call\');
它做同样的事情,但更具包容性。

下一步是创建ajax调用。你没有给出这样一个电话的例子,所以我所能做的就是建议你看一下$wpdb. WP有一组全面的调用,用于从数据库中检索信息,对于复杂的查询,您可以始终使用$wpdb->query(),它将为您运行任意SQL。

AJAX逻辑位于函数my\\u AJAX\\u call()中,结果应放入数组或对象中。函数的最后一行应该是调用wp\\u send\\u json\\u success($return),其中$return是要返回的信息的对象/数组。

通过使用该系统,我能够向wp\\U管理部分添加页面,允许店主根据WooCommerce数据和变体的侧载库(Woo仅允许父级库)创建进货订单。

下面是一个简单的例子:

function my_ajax_call() {
    $return[\'data\'] = date(\'Y-m-d\');
    wp_send_json_success($return);
    wp_die();
}
然后在javascript中,需要执行更多步骤。首先,您需要WP-AJAX URL,它通常是/wp-admin/admin-ajax.php 但可能会有所不同。它通常作为全局ajaxurl提供给Javascript,或者可能隐藏在另一个对象中,如woocommerce.ajaxurl. 您需要构造一个Javascript对象,其中包含一个指向函数的action元素以及可能需要传递给AJAX调用的任何其他变量。例如:

data = {\'action\':\'my_ajax_call\'}

data = {\'action\':\'my_ajax_call\', \'todo\':\'getDate\'}

(function($){
    $.ajax{
        url:ajaxurl,
        data: data,
        success: function(trn) {$(\'#data\').html(trn.data)}
})(jQuery)
HTH公司

相关推荐

Can I make plugins required?

我正在开发自己的Wordpress主题,将用于多个客户端。它有一个主题选项页面,这样我每次都可以轻松自定义网站,但我也会在我制作的每个网站上使用一些插件(如SEO插件、安全性等)。有没有办法让它们成为“必需的”,这样我就可以得到这些插件的列表,这样当我在新网站上安装主题时就不必在插件目录中找到它们了?