点击wordpress帖子中某个链接的计数

时间:2013-12-28 08:27:54

标签: php wordpress counter custom-fields

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

(例如,让我们说某个链接有一个名为'bla'的ID)

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

我觉得应该可以使用custom-fields/post-meta(保持计数),就像ever-so-popular'访客计数'技巧一样。不幸的是,我对PHP s无能为力。

2 个答案:

答案 0 :(得分:10)

可以使用ajax调用来完成,在跟踪链接之前更新post meta字段。下面的示例为未登录的用户注册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
    }
}
?>

答案 1 :(得分:1)

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