Как вывести описание рубрик, текст на страницы блога или магазина WordPress

Не во всех темах WordPress есть возможность вывести описание на страницах рубрик, текст или рекламу на странице блога и между постами, а также текст на странице каталога товаров Woocommerce. Давайте рассмотрим варианты добавления статического текста или рекламы на эти страницы.

1. Для страницы блога обычно используется шаблон index.php или home.php, для рубрик используется шаблон categories.php или archives.php. Откроем один из этих файлов и перед началом цикла while ( have_posts() ) : the_post(); добавим код, который выведет текст только на 1 странице пагинации.

HTML разметка и текст даны для примера.

<?php $page = (get_query_var('paged')) ? get_query_var('paged') : 1;
if ($page == 1) {
	echo ('<div class=""><p>' . esc_textarea('Какой-то текст.') . '</p></div>');
}; ?>

2. Включаем счетчик в цикле и выводим текст или рекламу между постами на странице блога или рубрик. В данном примере добавляем после 2 и 5 поста.

$postcount = 0; — включение счётчика перед началом цикла. $postcount++; — отсчитывает порядковый номер записи. if ($postcount == 2) — подсчёт поста.

<?php
$postcount = 0;
if (have_posts()):
    /* Start the Loop */
    while (have_posts()): the_post();
        $postcount++;
        get_template_part('template-parts/content', get_post_format());
        if ($postcount == 2) { ?>
		<div class="">
			<p>Какое-то содержимое</p>
		</div>
	<?php }
        if ($postcount == 5) { ?>
		<div class="">
			<p>Какое-то содержимое</p>
		</div>
	<?php }
    endwhile;
endif; ?>

3. Для вывода описания рубрик, перед началом цикла добавляем этот код в шаблон categories.php или archives.php:

<?php $page = (get_query_var('paged')) ? get_query_var('paged') : 1;
if ($page == 1) {
	echo the_archive_description('<div class="tax-desc">', '</div>');
}; ?>

4. Если надо вывести произвольный текст на странице определённой рубрики:

<?php if (is_category(5))// ID current category
{
  // Description for the current category
  echo category_description();
  // Add some extra content
  echo 'Какой-то текст.';
}; ?>

5. Иногда стоит задача вывести текст на странице каталога Woocommerce, добавляем этот код в файл functions.php:

Описание под товарами woocommerce_after_shop_loop. Описание перед товарами woocommerce_before_shop_loop.

add_action( 'woocommerce_after_shop_loop', 'my_show_page_description', 99 );
function my_show_page_description() {
   if (is_post_type_archive()) {
    echo ('<div class=""><p>' . esc_textarea('Какой-то текст.') . '</p></div>');
   }
}

6. Конечно, лучше добавить область текста через Настройщик или произвольные поля, но иногда проще создать дополнительную область виджетов.

Регистрируем область виджетов в файле functions.php.

/**
 * Register widget area.
 */
function custom_register_wp_sidebars() {
	// Widgets before the posts.
	register_sidebar(
		array(
			'id' => 'before-posts',
			'name' => __( 'Widgets before the posts', 'domain-theme' ),
			'description' => __( 'Add widgets or ads', 'domain-theme' ),
			'before_widget' => '<div id="%1$s" class="widget %2$s">',
			'after_widget' => '</div>', 
			'before_title' => '<span class="widget-title">',
			'after_title' => '</span>'
		)
	);
}
add_action( 'widgets_init', 'custom_register_wp_sidebars' );

В файле index.php, categories.php или archives.php, в нужном месте вставляем этот код:

<?php if ( is_active_sidebar( 'before-posts' ) ) : ?>
	<aside id="before-posts" class="widget">
		<?php dynamic_sidebar( 'before-posts' ); ?>
	</aside>
<?php endif; ?>

Теперь в меню «Виджеты» появился новый сайдбар.

⚠️ Всегда используйте дочернюю тему для настройки установленной темы. Тестируйте любой код на промежуточном веб-сайте перед переходом в рабочую среду.

наверх Do NOT follow this link or you will be banned from the site!