【问题标题】:Count WordPress Post view onClick using AJAX使用 AJAX 计算 WordPress Post view onClick
【发布时间】:2022-01-01 04:13:12
【问题描述】:

使用 AJAX 单击按钮时,如何计算我的 WordPress 帖子的帖子浏览量?

目前,每当我刷新页面时,它都会计算帖子视图,我想用 ajax 调用 tha 函数。

请检查我当前用于显示帖子查看次数的代码

functions.php 内部

if ( ! function_exists( 'count_views' ) ) :    
// Get the value of view
function count_views($postID) {   
    
    $count_key = 'wpb_post_views_count';    
    $count = get_post_meta($postID, $count_key, true);    
    
    if($count ==''){
        $count = 1;        
        delete_post_meta($postID, $count_key);        
        add_post_meta($postID, $count_key, '1');    
    } else {        
        $count++;        
        update_post_meta($postID, $count_key, $count);    
    }
}
endif;

然后在 single.php 上,我用 get_the_ID();

调用了函数 count_views
<?php count_views(get_the_ID()); ?>

要检索我使用的观看次数:

<li>
<i class="fa fa-eye"></i>                            
<?php
if (get_post_meta(get_the_ID(), 'wpb_post_views_count', true) == '') {
    echo '0';
} else {
    echo get_post_meta(get_the_ID(), 'wpb_post_views_count', true);
};
?>                             
</li>

如何使用 javascript Ajax 调用来调用 count_views(get_the_ID()) 函数。

【问题讨论】:

    标签: javascript php jquery ajax wordpress


    【解决方案1】:

    您需要为 WordPress 的 functions.php 文件添加操作。然后,您可以指定返回您要查找的数据的回调函数。 PHP 代码如下:

    // You add two actions here, so it can be accessed from outside the WP CMS
    add_action( 'wp_ajax_project_get_post_count', 'project_get_post_count_callback' );
    add_action( 'wp_ajax_nopriv_project_get_post_count', 'project_get_post_count_callback' );
    
    function project_get_post_content_callback() {
    
      if(!empty($_POST['ID'])){
        $postID == $_POST['ID'];
        $count_key = 'wpb_post_views_count';    
        $count = get_post_meta($postID, $count_key, true);
        $response['views'] = $count;
        if($response['views'] ==''){
            $response['views'] = 0;
        }
        wp_send_json( $response );
      }
    }
    

    一旦你有了这个设置,你需要在javascript中做一个AJAX发布,使用POST中的action属性传递动作名称。下面的内容将使您大部分时间到达那里。您需要正确格式化它才能获取数据。这个例子也在jQuery,vanilla JS会有所不同。 JS代码如下:

    $.ajax({
        type: 'POST',
        url: ajaxfullurl,
        data: {
            'action': 'project_get_post_count',
            'ID':<YOURIDHERE>
        }
    });
    

    您需要的最后一部分是 AJAX URL (ajaxfullurl)。 WordPress 提供了一种实现方式。这是您在 WordPress 网站上提取 AJAX 调用 URL 所需的 PHP 代码。

    echo admin_url('admin-ajax.php');
    

    【讨论】:

    • 嗨 cngodles!感谢您的回答,它解决了问题:)
    • 优秀。我确实注意到我弄乱了函数名称project_get_post_content_callback(),它应该是project_get_post_count_callback()。
    猜你喜欢
    • 2013-03-02
    • 2011-06-16
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多