• Всем доброго времени суток!
    Чтобы Google News корректно считывали миниатюру в посте, а не брали первую картинку в статье, мне приходится использовать функцию вставки кода в начало записи.
    Я использую такой код:

    add_filter( 'the_content', 'featured_image_before_content' ); 
    
    function featured_image_before_content( $content ) {
    	if ( is_singular('post') && has_post_thumbnail()) {
    		$thumbnail =  get_the_post_thumbnail();
    
    		$content = $thumbnail . $content;
    	}
    
    	return $content;
    }

    Он превосходного выполняет свою функцию, но отображение выглядит не так, как мне нужно. Мне необходимо как-то перевести код ниже в функцию выше. Прошу помощи.

    <div class="widget-week-item5"><?php if ( has_post_thumbnail()): ?><?php the_post_thumbnail();  ?><?php endif;?>
    
    								<div class="widget-week-content5">
    	<div class="item-comments5">
    		<span class="categorys5"><?php the_category(', '); ?></span>
    		<span class="item-views5"><i class="fa fa-clock-o"></i> <?php the_time( get_option( 'date_format' ) ); ?>  |
    		<i class="fa fa-comment-o"></i> <span class="count-comment{num}"><?php comments_number('0', '1', '%');?></span>
    		</a> | <i class="fa fa-eye"></i> <?php if(function_exists('the_views')) { the_views(); } ?></span></div>
    <a class="title" ><?php the_title(); ?></div></div>
    </a>

Просмотр 15 ответов — с 1 по 15 (всего 23)
  • Не совсем понял задачу. Функция выше — хук на the_content, которая перед выводом содержимого записи выводит миниатюру (если она имеется)
    НО
    В коде ниже контент не выводится вовсе.
    Миниатюра, Название рубрики, Текущее время, Камент, Количество просмотров и Название записи.
    (причём код с явной ошибкой вёрстки)
    В конце должно быть (по логике)

    <a class="title" ><?php the_title(); ?></a>
    </div></div>

    а не так как у Вас.

    Теперь, собственно, вопрос: Вам что именно нужно получить? То что в функции или то что в коде ниже? Или же создать ещё одну функцию, но с кодом ниже? 🙂

    Постараюсь объяснить, что мне нужно.
    Когда первый код вставлен в functions, то перед статьей в content выводится миниатюра записи. Роботом Google News она отлично индексируется и все отлично. Минус этого способа в том, что мне нужен определённый внешний вид, который у меня настроен в коде два.

    Код номер два расположен у меня в single.php, но робот Google News не определяет выводимую мной миниатюру как основное изображение, и если в тексте статьи есть хоть одна картинка, то он возьмёт именно ее. Если картинки нет, то будет взята миниатюра.

    Задача: всю эту верстку из single.php (второй код), выводить как первый код, то есть как часть content.

    а google news разве не из RSS контент берет?
    если из RSS, то стили должны быть инлайн — он не будет грузить стили с вашего сайта.

    Нет, точно не из RSS. Если я вставляю первый код в Functions, но все работает как нужно, но с убогим оформлением.

    Задача: всю эту верстку из single.php (второй код), выводить как первый код, то есть как часть content.

    Я, наверное, повторюсь, но в коде2(назовём его так) «контент не выводится вовсе».
    Это я к тому, что Google не просто так не может найти миниатюру.
    Не могли бы Вы привести ПОЛНЫЙ код single.php?

    а google news разве не из RSS контент берет?

    Нет, точно не из RSS. Если я вставляю первый код в Functions,

    А вот тоже сдается, что из RSS. А RSS берёт из the_content().
    А the-content в Вашем случае вставки коде, добавляет к нему миниатюру.
    Могу ошибаться…

    <?php get_template_part( 'content', 'before' ); ?>
    
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    
    						<div class="post" id="post-main-<?php the_ID(); ?>">
    
    							<div class="entry">								
    
    								<?php setPostViews(get_the_ID()); ?>
    
    								<div class="widget-week-item5"><?php the_post_thumbnail();  ?>
    								<div class="widget-week-content5">
    	<div class="item-comments5">
    		<span class="categorys5"><?php the_category(', '); ?></span>
    		<span class="item-views5"><i class="fa fa-clock-o"></i> <?php the_time( get_option( 'date_format' ) ); ?>  |
    		<i class="fa fa-comment-o"></i> <span class="count-comment{num}"><?php comments_number('0', '1', '%');?></span>
    		</a> | <i class="fa fa-eye"></i> <?php if(function_exists('the_views')) { the_views(); } ?></span></div>
    <a class="title"><?php the_title(); ?></a></div></div>
    
    								<?php if ( get_post_meta( $post->ID, 'video_embed', true ) ) { ?>
    									<div class="single-video">
    										<?php echo get_post_meta( $post->ID, 'video_embed', true ); ?>
    									</div>
    								<?php } ?>
    
    								<?php the_content(); ?>
    
    	<div style="clear:both;"></div>
    
    								<?php wp_link_pages(); ?>

    Ниже еще есть код, но он уже относится к рекламным блокам и комментариям.

    Код номер два расположен у меня в single.php, но робот Google News не определяет выводимую мной миниатюру как основное изображение, и если в тексте статьи есть хоть одна картинка, то он возьмёт именно ее. Если картинки нет, то будет взята миниатюра.

    Если Вы прямо перед выводом контента отобразите миниатюру, то Google News подхватит её?

    <?php if ( get_post_meta( $post->ID, 'video_embed', true ) ) { ?>
    <div class="single-video">
    	<?php echo get_post_meta( $post->ID, 'video_embed', true ); ?>
    </div>
    <?php } ?>
    <?php if ( has_post_thumbnail()): ?><?php the_post_thumbnail();  ?><?php endif;?>
    <?php the_content(); ?>
    <div style="clear:both;"></div>
    <?php wp_link_pages(); ?>

    Скорее всего нет.
    А что за плагин у вас для Google news?

    Нет плагина для Google News. Он индексирует страницу роботом. Никакие RSS, Feed и так далее добавлять не нужно. Сейчас проведу эксперимент и просто выведу одну миниатюру перед <?php the_content(); ?>. Для сайта это будет выглядеть также, как и через специальную функцию (первый код). Через пару минут отпишусь о результатах.

    Нет плагина для Google News. Он индексирует страницу роботом. Никакие RSS, Feed и так далее добавлять не нужно.

    Робот же находит Вашу карту сайта? Чем именно Вы её создаете? Если нет плагина, значит есть шаблон sitemap.php (что-то вроде того) в самой теме. И страницу, созданную с его помощью Вы и «отдаете» гуглу. Либо функция для создания sitemap…
    Хотя это, возможно, пока не важно…

    Карту сайта создает плагин Yoast SEO

    Сейчас проведу эксперимент и просто выведу одну миниатюру

    Как прошёл эксперимент?

    В процессе выполнения. Жду пока Google окончательно проиндексирует новость.

    Карту сайта создает плагин Yoast SEO

    Файл wordpress-seo\inc\class-sitemaps.php, начиная с 794 строки.

    Эксперимент завершен. Обычная вставка кода вывода миниатюры не подходит. Она работает не так, как функция. Хотя внешне все полностью идентично, включая просмотр исходного кода.

Просмотр 15 ответов — с 1 по 15 (всего 23)
  • Тема «Перевести код php в functions» закрыта для новых ответов.