用wordpress运行silex或slim


10

我正在WordPress上运行主题。在这个主题中,我正在进行一些AJAX调用,希望能对此有所回应。(http://example.com/capis/v0/packages/

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

index.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服务器。


似乎更多的服务器端问题。如果您只允许来自本地WordPress安装的请求,我想您需要配置服务器:)
Kolya Korobochkin

8
我强烈建议使用REST API而不是Silex。
kraftner

除了@kraftner提到的REST API外,您还可以查看Themosis框架。
Fabian Marz


您可以使用WP-REST API,也可以使用wp_ajax操作创建自定义API。这是官方文档
idpokute18年

Answers:


1

Silex服务器几乎无法通过Wordpress进行处理,但是要使WP响应AJAX调用需要花费一些精力。

第一步是通过AJAX使呼叫可用。这需要向您的functions.php文件中添加一行类似于

add_action('wp_ajax_my_ajax_call', 'onno_update_my_ajax_call');

如果此呼叫是为客人和客户(即不是ADMIN)进行的,则您还将需要此线路。

add_action('wp_ajax_nopriv_my_ajax_call', 'my_ajax_call');

它做同样的事情,但更具包容性。

下一步是创建ajax调用。您没有提供此类调用的示例,因此我所能做的就是建议您查看$ wpdb的文档。WP有一组全面的调用,用于从数据库检索信息和进行复杂的查询,您始终可以使用$ wpdb-> query()来为您运行任意SQL。

AJAX逻辑进入函数my_ajax_call(),结果应放入数组或对象中。函数的最后一行应该是对wp_send_json_success($ return)的调用,其中$ return是要返回的信息的对象/数组。

使用该系统,我已经能够在wp_admin部分中添加页面,以允许商店所有者从WooCommerce数据中建立用于补货的采购订单,以及用于变化的侧载图库(Woo仅允许父级画廊)。

这是一个简单的示例:

function my_ajax_call() {
    $return['data'] = date('Y-m-d');
    wp_send_json_success($return);
    wp_die();
}

然后在javascript中,需要执行更多步骤。一方面,您将需要WP AJAX URL,该URL通常是/wp-admin/admin-ajax.php但可能有所不同。它通常以全局ajaxurl的形式提供给Javascript使用,或者可能藏在另一个对象中,例如woocommerce.ajaxurl。您需要使用动作元素构造Javascript对象,该动作元素指向您的函数以及您可能需要传递给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)

高温超导


对于某些进一步的wordpress和ajax研究,我可以建议阅读一下Tom McFarlin撰写的文章,他对wordpress有v.knowledgg的知识,并且在ajax上有一些不错的帖子,特别是[ google.co.uk/…–
virtualLast,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.