質問: '<div id="write_here_ajax_wrap"></div>'; return $output; } add_shortcode('write-here-ajax', 'ajax_write_here'); そしてphp関数をajax requestにフックさせるfunction write_here_ajax_dashboard() { echo "test"; } add_action( 'wp_ajax_write_here_get_posts', 'write_here_ajax_dashboard' ); ドキュメントレディのjquery関数jquery(document).ready( function($) { function write_here_list_page(){ $.ajax({ type: "get", url: ajax_object.ajax_url, // check the exact url for your situation datatype: 'html', data: { action: 'write_here_get_posts', security: ajax_object.ajax_nonce }, error: function(jqxhr, textstatus, errormessage) { console.log(errormessage); return false; }, success: function(data) { //console.log(data); $('#write_here_ajax_wrap').html(''); $('#write_here_ajax_wrap').append(data); } }); } // initiate function write_here_list_page(); }); 私が今抱えている問題は、jquery関数がサイト全体のすべてのページで起動されていることです。ショートコードが挿入されているページでのみトリガーするようにするにはどうすればよいですか。
回答: あなたのshourtcodeであなたはwp_enqueue_scriptをすることができます。これが私が修正したコードです。jsファイルを登録するfunction wh_enqueue() { wp_register_script( 'wh-ajax-app', wh_path . '/js/write-here-ajax.js', array('jquery'), '1.0.0', true ); } add_action( 'wp_enqueue_scripts', 'wh_enqueue' ); あなたのショートコード関数にエンキューするfunction ajax_write_here(){ wp_enqueue_script( 'wh-ajax-app' ); // enqueue your script here $output = '<div id="write_here_ajax_wrap"></div>'; return $output; } add_shortcode('write-here-ajax', 'ajax_write_here'); これはショートコードが挿入されたページにあなたのjsファイルをロードするだけです。