ワードプレスでサイレックスまたはスリムを実行する


10

WordPressでテーマを実行しています。このテーマでは、いくつかの応答を期待している場所でAJAX呼び出しを行っています。(http://example.com/capis/v0/packages/

上記のhttp呼び出しに対応するために、httpサーバーとしてsilexを使用しています。

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を使用してajax呼び出しにデータを提供している8080ポートでサーバーを実行しています。

php -S localhost:8080 -t web web/index.php

次に、WordPressのみを使用してこれらのAjax呼び出しを処理したいと思います。特定のphpサーバーを実行したくない。


より多くのサーバー側の質問のようです。ローカルのWordPressインストールからのリクエストのみを許可する場合は、サーバーを構成する必要があると思います:)
Kolya Korobochkin

8
Silexの代わりにREST APIを使用することを強くお勧めします
クラフトナー2017

@kraftnerで言及されているREST APIの他に、Themosisフレームワークを調べることもできます。
Fabian Marz 2017

短い例については、ie wordpress.stackexchange.com/questions/301493を参照してください。私にとっては、developer.wordpress.org / rest-api / extending-the-rest-api / … が非常に役に立ちました。
Clemens Tolboom

WP-REST APIを使用することも、wp_ajaxアクションを使用してカスタムAPIを作成することもできます。ここに公式のドキュメントがあります
idpokute

回答:


1

WordPressで実行できないSilexサーバーでできることはほとんどありませんが、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にはデータベースから情報を取得するための包括的な呼び出しセットがあり、複雑なクエリのために、任意のSQLを実行する$ wpdb-> query()をいつでも使用できます。

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では、さらに多くの手順が必要です。1つには、WP AJAX URLが必要ですが、これは通常/wp-admin/admin-ajax.phpは異なりますが、多少異なる場合があります。多くの場合、JavaScriptでグローバルajaxurlとして利用できるようになりwoocommerce.ajaxurlます。また、などの別のオブジェクトに隠れている場合もあります。関数と、AJAX呼び出しに渡す必要があるその他の変数を指すアクション要素を使用して、JavaScriptオブジェクトを作成する必要があります。例えば:

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


さらにいくつかのワードプレスとAjax研究のために、私はトムMcFarlinによって作成された記事の読み取りを持つお勧めすることができ、彼はwordpressの程度v.knowledgableだと特にAJAXのいくつかの良い記事を持っている[ google.co.uk/...
virtualLast
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.