• Добрый день!

    Прошу подсказать следующий момент, если есть возможность.

    Для визуализации количества просмотров публикаций я установил на своем сайте на базе WordPress плагин «WP-PostViews» и вставил, как нашел в интернете, в редакторе тем в index.php после слов «while ( have_posts() ) : the_post();» следующий код: if (function_exists (‘the_views’)) { the_views (); }.

    В результате внешне количество просмотров отображается так: над картинкой публикации, см. текущую версию сайта.
    А хотелось бы, чтобы внешне количество просмотров было под названием публикации с иконкой глаза и количеством просмотров слева перед «25.04.2021 Alex 0 Комментариев Редактировать».

    Просьба подсказать, что и куда я должен дописать?

    Одновременно скажу, что я пытался вставить этот код (тоже нашел в интернете):

    <i class=”fa fa-eye” style=”front-size:10px;color:#888888”></i> 
    <?php if(function_exists('the_views')) { the_views(); } ?>

    Но он не работает почему-то. Выдает ошибку.

    Буду очень признателен за помощь!

    С уважением,
    Алексей!

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Попробуйте добавить в Code Snippets:

    
    function views_add(){
     echo '<div class="post-view-count" style="display: none">';
     if(function_exists('the_views')) { the_views(); };
     echo '</div>';
    }
    
    add_action( 'colormag_before_post_content', 'views_add', 20 );
    
    function add_script(){
    
    $script = <<<END_SCRIPT
    
    let postViewCount = document.querySelectorAll( '.post-view-count' );
    console.log( postViewCount );
    
    postViewCount.forEach( function( item ){
     let html = item.innerHTML;
     let post = item.parentNode;
     //console.log( post );
     let meta = post.querySelector( '.below-entry-meta' );
     //console.log( meta );
     let postedOn = meta.querySelector( '.posted-on' );
     //console.log( postedOn );
     let postView = document.createElement( 'span' );
     postView.innerHTML = html;
     postView.className = 'post-view';
     meta.insertBefore( postView, postedOn );
    });
    
    END_SCRIPT;
    
    wp_add_inline_script( 'colormag-custom', $script );
    
    }
    
    add_action( 'wp_enqueue_scripts', 'add_script', 30 );
    
    
    Автор alexstalexstalexst

    (@alexstalexstalexst)

    Большое спасибо за информацию….. но Ваш ответ для меня очень сложный)) Я плохо ориентируюсь в таких сложных кодах))
    А Вы не знаете, почему появляется ошибка при добавлении кода:
    <i class=”fa fa-eye” style=”front-size:10px;color:#888888”></i>
    <?php if(function_exists(‘the_views’)) { the_views(); } ?>

    Сообщение об ошибке:
    Ваши изменения в коде PHP были отменены из за ошибки на строке 36 файла wp-content/themes/colormag/index.php. Исправьте и попробуйте пересохранить.

    syntax error, unexpected ‘<‘

    Автор alexstalexstalexst

    (@alexstalexstalexst)

    На всякий случай вот полный код:
    —————————————————-

    <?php
    /**
     * Theme Index Section for our theme.
     *
     * @package    ThemeGrill
     * @subpackage ColorMag
     * @since      ColorMag 1.0
     */
    
    // Exit if accessed directly.
    if ( ! defined( 'ABSPATH' ) ) {
    	exit;
    }
    
    get_header();
    
    /**
     * Hook: colormag_before_body_content.
     */
    do_action( 'colormag_before_body_content' );
    ?>
    
    	<div id="primary">
    		<div id="content" class="clearfix">
    
    			<?php
    			if ( have_posts() ) :
    
    				/**
    				 * Hook: colormag_before_index_page_loop.
    				 */
    				do_action( 'colormag_before_index_page_loop' );
    
    				while ( have_posts() ) :
    					the_post();
    									  			
    					/**
    					 * Include the Post-Type-specific template for the content.
    					 * If you want to override this in a child theme, then include a file
    					 * called content-___.php (where ___ is the Post Type name) and that will be used instead.
    					 */
    			
    					get_template_part( 'content', '' );
    				endwhile;
    
    				/**
    				 * Hook: colormag_after_index_page_loop.
    				 */
    				do_action( 'colormag_after_index_page_loop' );
    
    				if ( true === apply_filters( 'colormag_index_page_navigation_filter', true ) ) :
    					get_template_part( 'navigation', 'none' );
    				endif;
    
    			else :
    
    				if ( true === apply_filters( 'colormag_index_page_no_results_filter', true ) ) :
    					get_template_part( 'no-results', 'none' );
    				endif;
    
    			endif;
    			?>
    
    		</div><!-- #content -->
    	</div><!-- #primary -->
    
    <?php
    colormag_sidebar_select();
    
    /**
     * Hook: colormag_after_body_content.
     */
    do_action( 'colormag_after_body_content' );
    
    get_footer();

    почему появляется ошибка при добавлении кода …

    В коде некоторая неточность. Под front-size: подразумевается, по-видимому, font-size:. Добавлять код нужно не в index.php, а в inc/template-tag.php после 27 строки.

    То есть, вместо

    
    function colormag_entry_meta( $full_post_meta = true ) {
    
      if ( 'post' == get_post_type() ) :
        echo '<div class="below-entry-meta">';
      ?>
    
    <?php
    // Displays the same published and updated date if the post is never updated.
    $time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
    
    

    должно получиться как-то так:

    
    function colormag_entry_meta( $full_post_meta = true ) {
      
      if ( 'post' == get_post_type() ) :
        echo '<div class="below-entry-meta">';
      ?>
    
    <span class="post-views">
    <i class="fa fa-eye" style="font-size: 10px; color: #888888;"></i> 
    <span style="font-size: 12px; color: #888888; padding-right: 10px;">
    <?php if(function_exists('the_views')) { the_views(); } ?>
    </span>
    </span>
    
    <?php
    // Displays the same published and updated date if the post is never updated.
    $time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
    
    

    После каждого обновления темы изменения в файл inc/template-tags.php придется вносить заново.

    После каждого обновления темы изменения в файл inc/template-tags.php придется вносить заново.

    Дочернии темы — для лохов?

    Автор alexstalexstalexst

    (@alexstalexstalexst)

    fevenili (@fevenili) — ОГРОМНОЕ ПРЕОГРОМНОЕ СПАСИБО!!!!!!!!! Теперь все как надо!)))))

    Код для Code Snippets немного изменил

    
    function views_add(){
     echo '<span class="post-views">';
     echo '<i class="fa fa-eye" style="font-size: 10px; color: #888888; padding-right: 5px;"></i>';
     echo '<span style="font-size: 12px; color: #888888; padding-right: 10px;">';
     if(function_exists('the_views')) { the_views(); }
     echo '</span>';
     echo '</span>';
    }
    
    add_action( 'colormag_after_post_content', 'views_add', 20 );
    
    function add_script(){
    
    $script = <<<END_SCRIPT
    
    let postViews = document.querySelectorAll( '.post-views' );
    postViews.forEach( function( item ){
     let post = item.parentNode;
     let articleContent = post.querySelector( 'div.article-content' );
     let entryMeta = articleContent.querySelector( 'div.below-entry-meta' );
     let postedOn = entryMeta.querySelector( 'span.posted-on' );
     entryMeta.insertBefore( item, postedOn );
    });
    
    END_SCRIPT;
    
    wp_add_inline_script( 'colormag-custom', $script );
    
    }
    
    add_action( 'wp_enqueue_scripts', 'add_script', 30 );
    
    
    Автор alexstalexstalexst

    (@alexstalexstalexst)

    1) Я правильно понимаю, что этот код необходим для сохранения формата отображения количества просмотров на странице сайта при обновлении темы?

    2) Просьба подсказать, где данный код нужно указывать?
    Тоже в inc/template-tag.php вместо предыдущего кода?

    Заранее благодарен!

    где данный код нужно указывать?

    Я бы уже ничего больше не менял. У вас, вроде бы, все работает. Оставьте как есть.

    Я изначально предлагал вариант со сниппетом, потому, что этот способ проще для многих пользователей, нежели правка файлов темы, или создание дочерней темы.

    Сниппет — это что-то вроде заплатки. Помогает внести изменения в тему без правки файлов темы. Если что-то пойдет не так, то проблемный сниппет можно отключить. Обновлению темы сниппеты не препятствуют, и, обычно, продолжают работать корректно. Подробнее про Code Snippets, сам плагин.

    Автор alexstalexstalexst

    (@alexstalexstalexst)

    Понял) Большое спасибо за помощь!))

Просмотр 11 ответов — с 1 по 11 (всего 11)

Тема «WP-PostViews. Как вывести отображение.» закрыта для новых ответов.