Licz i pokazuj kliknięcia linków zewnętrznych na jednej stronie/poście
Tak to mozliwe. Możesz to zrobić za pomocą wywołania ajax, które aktualizuje pole meta postu przed kliknięciem łącza.
W przykładzie użyłem administratorów i użytkowników niebędących administratorami, którzy kliknęli link i automatycznie zwiększyli link_check_click_counter w meta posta. Użyłem tutaj przykładu, aby pokazać dane za pomocą wp_footer. Możesz także użyć wp_head zamiast wp_footer. Skopiuj i wklej kod i dodaj go do functions.php. Po kliknięciu linku link_check_click_counter meta utworzy dla tego posta i możesz śledzić, ile kliknięć linku.
HTML
<div id="link_count">
<a href="
<a href="
<a href="
<a href="
</div>
PHP
<?php
/* functions.php */
add_action( 'wp_ajax_link_check_click_counter', 'link_check_click_counter');
add_action( 'wp_ajax_nopriv_link_check_click_counter', 'link_check_click_counter' );
function link_check_click_counter() {
if ( isset( $_POST['nonce'] ) && isset( $_POST['post_id'] ) && wp_verify_nonce( $_POST['nonce'], 'link_check_click_counter_' . $_POST['post_id'] ) ) {
$count = get_post_meta( $_POST['post_id'], 'link_check_click_counter', true );
update_post_meta( $_POST['post_id'], 'link_check_click_counter', ( $count === '' ? 1 : $count + 1 ) );
}
exit();
}
add_action( 'wp_footer', 'link_click' );
//add_action( 'wp_head', 'link_click' );
function link_click() {
global $post;
if( isset( $post->ID ) ) {
?>
<script type="text/javascript" >
jQuery(function ($) {
var ajax_options = {
action: 'link_check_click_counter',
nonce: '<?php echo wp_create_nonce( 'link_check_click_counter_' . $post->ID ); ?>',
ajaxurl: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
post_id: '<?php echo $post->ID; ?>'
};
$( '#link_count a' ).on( 'click', function() {
var href = $( this ).attr( "href" );
var redirectWindow = window.open(href, '_blank');
$.post( ajax_options.ajaxurl, ajax_options, function() {
redirectWindow.location;
});
return false;
});
});
</script>
<?php
}
}
?>
Liczba linków w poście
global $post;
print get_post_meta($post->ID,'link_check_click_counter',true);
Zsumuj wszystkie liczby ze wszystkich postów
$all_link_count = link_check_meta_values( 'link_check_click_counter', 'page' );
$total = array_sum($all_link_count);
print $total;
// dodaj to w functions.php
function link_check_meta_values( $key = '', $type="post", $status="publish" ) {
global $wpdb;
if( empty( $key ) )
return;
$r = $wpdb->get_col( $wpdb->prepare( "
SELECT pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = '%s'
AND p.post_status="%s"
AND p.post_type="%s"
", $key, $status, $type ) );
return $r;
}