質問: $(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 ); }