WordPressə baxış sayı əlavə etmək + BONUS
0
211

Məqaləyə baxış sayı günümüzün vacib funksiyalarından sayılır. Bu funksiyanı saytınıza əlavə edəcək bir çox qoşmalar mövcuddur. Lakin bu qoşmalar nə dərəcədə təhlükəsizdir? Bu qoşmalar yenilənirmi? Verilənlər bazasına nə qədər yük salır? Bu tip suallardan qaçmaq üçün məsləhət görürəm ki, gəlin bu funksiyanı qoşmaların köməyi olmadan veb sayta əlavə edək və nəyin harda necə olduğunu birlikdə anlayaq.

İlk addımlar

1. Baxış sayını verilənlər bazasına əlavə edəcək və hesablayacaq funksiyanı işə salırıq.

Bunun üçün “views” adlı bir meta dəyər yaradırıq. Hər məqalə üçün hesablanan baxış sayı xəbərin “views” meta dəyərində qeyd olunacaq.

Bu funskiyanı şablon qovluqunuzda yerləşən functions.php faylına əlavə edin.

function webmark_set_post_views($postID) {
	$count_key = 'views';
	$count = get_post_meta($postID, $count_key, true);
	if ($count == '') {
		$count = 0;
		delete_post_meta($postID, $count_key);
		add_post_meta($postID, $count_key, '0');
	}
}

2. Dəyər üçün hesablama funskiyasını işə salırıq.

Bu funskiyanı şablon qovluqunuzda yerləşən functions.php faylına əlavə edin.

function webmark_process_post_views_without_wp_cache() {
	
	global $post;

	if (is_int($post))
	{
		$post = get_post($post);
	}

	if (wp_is_post_revision($post) || is_preview())
	{
		return;
	}

	if (!is_single() && !is_page())
	{
		return;
	}

	if (defined('WP_CACHE') && WP_CACHE)
	{
		return;
	}

	$id = intval($post->ID);
	$post_views = get_post_meta($post->ID, 'views', true);
	if (!$post_views)
	{
		$post_views = 0;
	}
	update_post_meta($id, 'views', ($post_views + 1));
	
}
add_action('wp_head', 'webmark_process_post_views_without_wp_cache' );

3. Baxış sayını göstərəcək funksiyanı işə salırıq.

Bu funskiyanı şablon qovluqunuzda yerləşən functions.php faylına əlavə edin.

function webmark_get_post_views($postID) {
	$count_key = 'views';
	$count = get_post_meta($postID, $count_key, true);
	if ($count == '') {
		delete_post_meta($postID, $count_key);
		add_post_meta($postID, $count_key, '0');
		return "0";
	}
	return $count . '';
}

Məqaləyə baxış sayını səhifənin istənilən bir yerində göstərmək üçün:

<?php echo webmark_get_post_views(get_the_ID()); ?>

4. Admin hissədə baxış sayını göstərmək üçün aşağıdakı funksiyaları daxil edirik.

  1. Column – admin hissədə sütun yaradırıq
  2. Count – sütunda baxış sayını göstərəcək funskiyanı qeyd edirik
  3. CSS – yaratdığımız sütun üçün dizayn işi görürük

Bu funskiyanı şablon qovluqunuzda yerləşən functions.php faylına əlavə edin.

// 1) Column
function webmark_posts_column_views($defaults){
	$defaults['views'] = __( 'Views','main' );
	return $defaults;
}
add_filter('manage_posts_columns', 'webmark_posts_column_views' );

// 2) Count
function webmark_posts_my_column_views($column_name, $id){
	if($column_name === 'views'){
		echo webmark_get_post_views( get_the_ID() );
	}
}
add_action('manage_posts_custom_column', 'webmark_posts_my_column_views', 5, 2 );

// 3) CSS
function webmark_posts_my_column_css(){
	echo "\n" . '<style>.fixed .column-views{width:10%;}</style>' . "\n";
}
add_action('admin_head', 'webmark_posts_my_column_css' );

Bununla da saytımız üçün hazırladığımız baxış sayı snippetini tamamlamış olduq.


Bonus

Əgər veb saytınızda keş sistemi qurulubsa bu zaman baxış sayının hesablanması ilə bağlı müəyyən problemlər yaranır. Əsas problemlərdən biri isə budur ki, baxış sayı hesablanmır 🙂

Bu problemin aradan qaldırılması üçün ajax soğrudan istifadə edəcəyik.

1. Şablon qovluqunda ajax-views.js adlı javascript faylı yaradırıq. Bundan sonra həmin faylın daxilinə aşağıdakı kodu daxil edirik.

jQuery.ajax({
    type: "GET",
    url: PostViewsCache.ajaxurl,
    data: {
        "post_id": PostViewsCache.post_id,
        "action": "process_postviews"
    },
    cache:!1
});

2. Daha sonra bu əməliyyatın həyata keçməsi üçün funksiya yaradırıq.

Bu funskiyanı şablon qovluqunuzda yerləşən functions.php faylına əlavə edin.

function webmark_process_post_views_with_wp_cache_enabled() {	
	
	global $post;
	
	if (is_int($post))
	{
		$post = get_post($post);
	}

	if (!defined('WP_CACHE') || !WP_CACHE)
	{
		return;
	}

	if (wp_is_post_revision($post) || is_preview())
	{
		return;
	}

	if (!is_single() && !is_page())
	{
		return;
	}

	wp_enqueue_script('post-views-cache', get_template_directory_uri() . '/ajax-views.js', array(
		'jquery'
	) , null, true);

	wp_localize_script('post-views-cache', 'PostViewsCache', array(
		'ajaxurl' => admin_url('admin-ajax.php') ,
		'post_id' => intval($post->ID) ,
	));
	
}
add_action('wp_enqueue_scripts', 'webmark_process_post_views_with_wp_cache_enabled' );

3. Ajaxı işə salırıq.

Bu funskiyanı şablon qovluqunuzda yerləşən functions.php faylına əlavə edin.

function webmark_process_postviews() {
			
	if (!defined('WP_CACHE') || !WP_CACHE)
	{
		return;
	}

	if (empty($_GET['post_id']))
	{
		return;
	}

	$post_id = intval($_GET['post_id']);
	if ($post_id > 0)
	{
		$post_views = get_post_meta($post_id, 'views', true);
		if (!$post_views)
		{
			$post_views = 0;
		}
		update_post_meta($post_id, 'views', ($post_views + 1));
		echo ($post_views + 1);
	}
	exit();
	
}
add_action('wp_ajax_process_postviews', 'webmark_process_postviews' );
add_action('wp_ajax_nopriv_process_postviews', 'webmark_process_postviews' );

Ümid edirəm ki, məqaləni bəyəndiniz.

Paylaş:
  • whatsapp
  • messenger
  • telegram
  • vkontakte
  • odnoklassniki
0
Qaranlıq qalan nəsə var? Şərh yaz, cavablayaq!

Bir cavab yazın

Sizin e-poçt ünvanınız dərc edilməyəcəkdir. Gərəkli sahələr * ilə işarələnmişdir

*

*

*