私はプラグインに取り組んでいます。私はカスタム投稿タイプteam
を持っています。カスタム投稿は異なるカテゴリーの4つの投稿を持っています。私はajaxを使ってそれぞれの投稿IDを送るためにこのコードを使いました。
$(document).ready(function () {
$(".post_thumbnail").click(function () {
var id_post = $(this).attr('post_id');
$.ajax({
type: 'POST',
url: "<?php echo plugin_dir_url(__FILE__).'post-content.php';?>",
data: {
'post_id': id_post
}, success: function (result) {
alert(result);
},
error: function () {
alert("error");
}
});
});
});
私は正常にIDを送信し、それも取得しています。IDを取得するには私のコードは
if(isset($_POST['post_id'])) {
echo $id=$_POST['post_id'];
}
しかし、私は各記事の内容を表示することができません。各記事の内容を表示するには?私は全力を尽くすが失敗する。どんな助けでも高く評価される
まず、alwaysのカスタム関数ではなく、WordPress AJAXメソッドを使用する必要があります。 Codexの AJAX in Plugins を参照してください。
そのプラクティスを念頭に置いて、次のようにリクエストを設定できます。 AJAX URLを変更します
<?php echo admin_url('admin-ajax.php'); ?>
次のステップで実行するWordPressアクションをデータに追加します。
$(".post_thumbnail").click(function () {
var id_post = $(this).attr('post_id');
$.ajax({
type: 'POST',
url: '<?php echo admin_url('admin-ajax.php'); ?>',
data: {
'post_id': id_post,
'action': 'f711_get_post_content' //this is the name of the AJAX method called in WordPress
}, success: function (result) {
alert(result);
},
error: function () {
alert("error");
}
});
});
ここで、誰かがf711_get_post_content
を呼び出したときに、WordPressに何をすべきかを伝える必要があります。
WordPress AJAXにアクションを登録します。これはプラグイン関数で行われます。最初の部分( 'wp_ajax_')は、これがWordPressアクションであることをAJAXに伝え、その後の部分はアクションの名前( 'f711_get_post_content')です。 2番目の引数は、このアクションが呼び出されたときに実行される関数WordPressです。
add_action( 'wp_ajax_f711_get_post_content', 'f711_get_post_content_callback' );
// If you want not logged in users to be allowed to use this function as well, register it again with this function:
add_action( 'wp_ajax_nopriv_f711_get_post_content', 'f711_get_post_content_callback' );
その後、コールバック関数を作成します。 常にdie()するAJAX関数を忘れないでください。関数がJSONを出力する場合(推奨)、wp_send_json( $array );
が組み込まれているdie()
を使用して関数を終了できます。
function f711_get_post_content_callback() {
// retrieve post_id, and sanitize it to enhance security
$post_id = intval($_POST['post_id'] );
// Check if the input was a valid integer
if ( $post_id == 0 ) {
echo "Invalid Input";
die();
}
// get the post
$thispost = get_post( $post_id );
// check if post exists
if ( !is_object( $thispost ) ) {
echo 'There is no post with the ID ' . $post_id;
die();
}
echo $thispost->post_content; //Maybe you want to echo wpautop( $thispost->post_content );
die();
}
これは、推奨されるJSONバージョンです。これにより、複数の変数をクライアントに戻すことができます。
function f711_get_post_content_callback() {
// retrieve post_id, and sanitize it to enhance security
$post_id = intval($_POST['post_id'] );
// Check if the input was a valid integer
if ( $post_id == 0 ) {
$response['error'] = 'true';
$response['result'] = 'Invalid Input';
} else {
// get the post
$thispost = get_post( $post_id );
// check if post exists
if ( !is_object( $thispost ) ) {
$response['error'] = 'true';
$response['result'] = 'There is no post with the ID ' . $post_id;
} else {
$response['error'] = 'false';
$response['result'] = wpautop( $thispost->post_content );
}
}
wp_send_json( $response );
}