如何将wordpress类别作为数据发送到ajax?

时间:2015-03-10 11:03:52

标签: php jquery ajax wordpress post

我想将当前页面类别发送到ajax。我在我的博客网站上使用WordPress。我想将当前页面类别发送到infi.php,但我不知道该怎么做。

我的ajax

$.ajax({
        type: "POST",
        async: false,
        url: "/infi.php",
        data: {pcount:post_page_count},
        success:
        function(result){
            $("#gizinfi").append(result);
            }
      });

1 个答案:

答案 0 :(得分:3)

要在Wordpress中正确使用AJAX,您需要执行几个步骤。

首先,假设您正在正确注册和排队您的javascript文件(如果您不知道或不知道这意味着您应该检查如何在Wordpress中排队文件),则需要本地化该文件。在你的functions.php文件中,你可以像这样本地化一个文件......

$data_array = array(
    'ajaxurl' => admin_url( 'admin-ajax.php' )
);

wp_register_script( 'YourAjaxScript', get_template_directory_uri() . 'js/example.js', array('jquery') );
wp_localize_script( 'YourAjaxScript', 'myAjax', $data_array );

现在您需要一些从javascript访问类别ID的方法。您可以在模板中的某个位置简单地包含空跨度,并将category_id存储为数据属性,然后您可以使用javascript轻松找到它。出于安全原因,您还可以添加“nonce”,这样您就可以检查它是您正在访问PHP的ajax调用,而不是randomer。所以我们将这个添加到你的header.php ...

<?php
//For the sake of this we'll only get the first category
$categories = get_the_category();
$cat = ( !empty( $categories ) ? $categories[0]->term_id : false );

//We'll also create a nonce for security
$nonce = wp_create_nonce( 'ajax_nonce' );
?>

<span id="category-id" data-category="<?php echo $cat; ?>" data-nonce="<?php echo $nonce; ?>"></span>

现在在example.js文件中,您可以创建AJAX函数......

$( document ).ready( function() {

    //Fetch your data variables
    var $cat = $( '#category-id' ).data('category');
    var $nonce = $( '#category-id' ).data('nonce');

    $.ajax({
        type: 'POST',
        url: myAjax.ajaxurl,
        data: {
            action: 'my_ajax_handler', //PHP function to handle AJAX request
            category: cat,
            nonce: $nonce
        },
        success: function( data ) {
            $("#gizinfi").append( data );
        }
    });

});

然后你需要创建一个处理你的AJAX请求的PHP函数(只要你正确地包含那个文件就可以进入你的infi.php文件,但在你的functions.php文件中可能会更好)。例如......

/**
 * my_ajax_handler - handles my ajax response and returns some data
 * @return string - my data
 */
function my_ajax_handler() {
    //First we'll validate the nonce and exit if incorrect
    if ( !wp_verify_nonce( $_POST['nonce'], 'ajax_nonce' ) ) { exit; }

    //Here we handle your ajax request and return whatever
    //All our data variables are saved in the $_POST array
    $category = $_POST['category'];
    return $category;
}

add_action("wp_ajax_my_ajax_handler", "my_ajax_handler");
add_action("wp_ajax_nopriv_my_ajax_handler", "my_ajax_handler");

最后2行将函数绑定到ajax调用。这应该是你所需要的一切。

希望有所帮助