使用AJAX调用Wordpress短代码

时间:2015-05-07 13:53:22

标签: javascript php jquery ajax wordpress

我在Wordpress中有一个短代码,我想通过点击一个按钮用jQuery调用它。我阅读了一些网站和教程,但我无法确切地知道发生了什么。

我把它放在function.php上:

add_action( 'init', function() { 
  ps_register_shortcode_ajax( 'ps_get_survey_form', 'ps_get_survey_form' ); 
} );

function ps_register_shortcode_ajax( $callable, $action ) {

  if ( empty( $_POST['action'] ) || $_POST['action'] != $action )
    return;

  call_user_func( $callable );
}

function ps_get_survey_form() {
    echo do_shortcode( '[dopbsp id=6 lang=el]' );
    die(); 
} 

这是在page-template.php上我使用:

<button id="testonclick" onclick="test()"></button>

<div id="testresults"></div>

<script>

function test() {
    jQuery.ajax({
        url: "http://localhost/myweb" + "/wp-admin/admin-ajax.php",
        data : {action: 'ps_get_survey_form'},
        success: function(results){
            jQuery("#testresults").html(results)
        },
        error: function(errorThrown){console.log(errorThrown);}
    });// end of ajax
}
</script>

然而,结果是0.任何想法发生了什么错误?

2 个答案:

答案 0 :(得分:0)

我相信你想要使用像

这样的东西
add_action('wp_ajax_nopriv_ps_get_survey_form', 'ps_get_survey_form' );
add_action( 'wp_ajax_ps_get_survey_form', 'ps_get_survey_form' );

代替你的

add_action( 'init', function() { ps_register_shortcode_ajax( 'ps_get_survey_form', 'ps_get_survey_form' ); } );

您可以在this Codex page上了解更多相关信息。

据我所知,你写的内容并不能通过AJAX提供你的功能。我当然不会知道一切。这只是我使用的方法。

答案 1 :(得分:0)

你应该在WP和AJAX上查看这篇文章。最好是“联系”。 ajax调用admin ajax脚本。

http://www.smashingmagazine.com/2011/10/18/how-to-use-ajax-in-wordpress/

add_action("wp_ajax_my_user_vote", "my_user_vote");
add_action("wp_ajax_nopriv_my_user_vote", "my_must_login");

 wp_register_script( "my_voter_script", WP_PLUGIN_URL.'/my_plugin/my_voter_script.js', array('jquery') );
   wp_localize_script( 'my_voter_script', 'myAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));

请注意,短代码可能会加载表单所需的css或js,但不会通过ajax调用加载。