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

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

    Для визуализации количества просмотров публикаций я установил на своем сайте на базе 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 );
    
    

    Большое спасибо за информацию….. но Ваш ответ для меня очень сложный)) Я плохо ориентируюсь в таких сложных кодах))
    А Вы не знаете, почему появляется ошибка при добавлении кода:
    <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 ‘<‘

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

    <?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 придется вносить заново.

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

    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 );
    
    

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

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

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

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

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

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

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

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

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Тема «WP-PostViews. Как вывести отображение.» закрыта для новых ответов.