【问题标题】:click count of a certain link in wordpress postwordpress 帖子中某个链接的点击次数
【发布时间】:2014-01-15 17:52:01
【问题描述】:

是否可以统计帖子中某个链接被点击的次数?

(例如,假设某个链接有一个名为“bla”的 ID)

<a id="bla" href="#">download</a>

我感觉应该可以使用custom-fields/post-meta(保持计数),就像ever-so-popular“访客计数”技巧一样。不幸的是,我对PHPs 一无所知。

【问题讨论】:

  • 我的意思是您可以使用包含所有链接 ID 的数据库表以及 jQuery 和 AJAX 调用的组合来跟踪。由于 AJAX 调用,它会造成轻微的延迟,因此可能会很明显。
  • 这个解决方案对我有用:wordpress.stackexchange.com/questions/258898/…

标签: php wordpress counter custom-fields


【解决方案1】:

一种可能的方法是通过一个通用的 PHP 网关重定向所有内容,然后从那里重定向到您想要使用 Header('Location: yourpage.html'); 重定向的原始页面 在网关 PHP 页面中,通过将保存的值增加 1 来计算数字。

【讨论】:

    【解决方案2】:

    这可以通过 ajax 调用来完成,该调用在链接之前更新 post 元字段。下面的示例为未登录的用户注册 ajax 操作,并在每次单击时将 link_click_counter 自定义字段增加 1。链接必须具有 id 属性 countable_link。这是一个基本示例,仅适用于帖子中的一个链接。要将其用作插件,请创建 wp-content/plugins/click-counter /click-counter.php 之类的文件并复制粘贴示例代码,或者将代码放在主题文件夹内的 functions.php 中。第一次点击链接时,将为该帖子创建新的自定义字段link_click_counter,您可以在那里跟踪链接的点击次数。

    HTML:

    <a id="countable_link" href="#">download</a>
    

    PHP:

    <?php
    /*
    Plugin Name: Link Clicks Counter
    */
    
    if ( is_admin() ) add_action( 'wp_ajax_nopriv_link_click_counter', 'link_click_counter' );
    function link_click_counter() {
    
        if ( isset( $_POST['nonce'] ) &&  isset( $_POST['post_id'] ) && wp_verify_nonce( $_POST['nonce'], 'link_click_counter_' . $_POST['post_id'] ) ) {
            $count = get_post_meta( $_POST['post_id'], 'link_click_counter', true );
            update_post_meta( $_POST['post_id'], 'link_click_counter', ( $count === '' ? 1 : $count + 1 ) );
        }
        exit();
    }
    
    
    add_action( 'wp_head', 'link_click_head' );
    function link_click_head() {
        global $post;
    
        if( isset( $post->ID ) ) {
    ?>
        <script type="text/javascript" >
        jQuery(function ($) {
            var ajax_options = {
                action: 'link_click_counter',
                nonce: '<?php echo wp_create_nonce( 'link_click_counter_' . $post->ID ); ?>',
                ajaxurl: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
                post_id: '<?php echo $post->ID; ?>'
            };
    
            $( '#countable_link' ).on( 'click', function() {
                var self = $( this );
                $.post( ajax_options.ajaxurl, ajax_options, function() {
                    window.location.href = self.attr( "href" );
                });
                return false;
            });
        });
        </script>
    <?php
        }
    }
    ?>
    

    【讨论】:

    • 这似乎对我也不起作用,你能告诉我我缺少什么吗?
    • 您好,我尝试了以下方法,但似乎没有更新? codepen.io/Cozmoz/pen/gjEBVJ
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 2019-11-18
    • 1970-01-01
    相关资源
    最近更新 更多