私のAjaxでのjsonデータの呼び出しは、このfunctions.phpのようにうまくいきます。
add_action( 'wp_ajax_nopriv_load-filter', 'prefix_load_cat_posts' );
add_action( 'wp_ajax_load-filter', 'prefix_load_cat_posts' );
function prefix_load_cat_posts () {
//get data here
}
javaScript:
var ajaxurl = 'http://'+window.location.Host+'/wp-admin/admin-ajax.php';
jQuery.ajax({
type: 'POST',
url: ajaxurl,
etc.
私は2つ質問があります。
1)jsonをthemes/example/json.php
のような別のファイルにエンコードする代わりにadmin-ajax.phpを使用して、そこでデータをエンコードするのはなぜですか?
2)admin-ajax.phpはどのように機能しますか?そのファイルからあまり理解できません。あなたはそれらを使用する準備ができているのでそれはすべての機能をロードしますか?
ありがとうございます。
1)jsonを
admin-ajax.php
のような別のファイルにエンコードする代わりにthemes/example/json.php
を使用して、そこでデータをエンコードするのはなぜですか?
admin-ajax.php
を使用することはWordPressコアがロードされて利用可能であることを意味します。それでも、必要なファイルを手動でロードする必要があります。これは複雑なプロセスで、Coreをあまりよく知らないと失敗する傾向があります。そして、Javascriptのセキュリティはどの程度上手ですか?
2)
admin-ajax.php
はどのように機能しますか?そのファイルからあまり理解できません。あなたはそれらを使用する準備ができているのでそれはすべての機能をロードしますか?
$wpdb
や$WP_Query
のようなものを使うことができます。 25行目までです。send_nosniff_headers()
で送られるものです。nocache_headers()
。admin_init
フックが起動します。$_GET
または$_POST
を通してリクエストされない限り登録されません。私の意見では、#1と#6がAJAX APIを使用する主な理由です。あなたはWordPress Coreを持っていて、それはあなたがほぼ確実に必要としています、そしてあなたはWordPressの他の部分と同じログインセキュリティシステムを持っています。
admin-ajax.php
はWordPress AJAX API の一部であり、はい、バックエンドとフロントの両方からのリクエストを処理します。ここに私はあなたの質問のために把握しているものです:
2)admin-ajax.phpはどのように機能しますか?
logic については、こちらをご覧ください。
これはあなたがすでにJavaScriptなどをエンキューする方法を知っていることを前提としています。
JavaScriptのピース:
jQuery(document).ready(function($) {
// We'll pass this variable to the PHP function example_ajax_request
var fruit = 'Banana';
// This does the ajax request
$.ajax({
url: ajaxurl,
data: {
'action':'example_ajax_request',
'fruit' : fruit
},
success:function(data) {
// This outputs the result of the ajax request
console.log(data);
},
error: function(errorThrown){
console.log(errorThrown);
}
});
});
PHP Piece:
function example_ajax_request() {
// The $_REQUEST contains all the data sent via ajax
if ( isset($_REQUEST) ) {
$fruit = $_REQUEST['fruit'];
// Let's take the data that was sent and do something with it
if ( $fruit == 'Banana' ) {
$fruit = 'Apple';
}
// Now we'll return it to the javascript function
// Anything outputted will be returned in the response
echo $fruit;
// If you're debugging, it might be useful to see what was sent in the $_REQUEST
// print_r($_REQUEST);
}
// Always die in functions echoing ajax content
die();
}
add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' );
// If you wanted to also use the function for non-logged in users (in a theme for example)
add_action( 'wp_ajax_nopriv_example_ajax_request', 'example_ajax_request' );
1)jsonをthemes/example/json.phpのような別のファイルにエンコードする代わりにadmin-ajax.phpを使用してデータをエンコードするのはなぜですか?
これが役に立つかもしれません。 admin-ajax.php対Ajaxリクエスト用のカスタムページテンプレート _