您好,欢迎来到WPSE。我可以建议一种不同的方法来将AJAX实现到您的主题中,在我看来,它也更容易使用。
基于this article, 你能做的最好的事情就是使用WP的nativeadmin-ajax.php
运行函数的文件。根据您在问题中发布的代码,我得出了以下结论:(我添加了一个nonce和一个“success”变量以更好地控制,您可以看到它是如何在中定义的functions.php
, 此外,请根据您的需要进行修改,这是一个示例)
some-js-file.js
:
$.post( yourajax.ajaxurl, {
nonce: yourajax.nonce,
action: \'load_men_blog\'
}, function( response ) {
if( response.success === true ) {
$( "#b_contentwrapper" ).empty().append( response.html );
} else {
alert( "There was an error with your request" );
}
}
functions.php
:
add_action( \'wp_ajax_nopriv_load_men_blog\', \'load_men_blog\' );
add_action( \'wp_ajax_load_men_blog\', \'load_men_blog\' );
add_action( \'wp_enqueue_scripts\', \'load_some_scripts\' );
function load_some_scripts() {
wp_enqueue_script( \'jquery\' );
wp_enqueue_script( \'json2\' );
wp_register_script( \'some-js-file\', get_bloginfo( \'template_url\' ) . \'/some-js-file.js\', array( \'jquery\', \'json2\' ) );
wp_enqueue_script( \'some-js-file\' );
wp_localize_script( \'some-js-file\', \'yourajax\', array(
\'ajaxurl\' => admin_url( \'admin-ajax.php\' ),
\'nonce\' => wp_create_nonce( \'some-js-file-nonce\' )
));
}
function load_men_blog() {
$nonce = $_POST[\'nonce\'];
if ( !wp_verify_nonce( $nonce, \'some-js-file-nonce\' ) )
die ( __( \'Busted!\' ) );
$posts = get_posts( \'fields=ids\' ); // Just gets post IDs, can be removed, added to save time
$return_str = \'\';
if( count( $posts ) > 0 ) {
$success = true;
foreach( $posts as $a_post ) // For each post in the DB..
$return_str .= "azerty"; // ..add \'azerty\' to the string to return
} else {
$success = false;
}
$response = json_encode( array( \'success\' => $success, \'html\' => $return_str ) );
header( "content-type: application/json" );
echo $response;
exit;
}