WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

Как закрыть облако меток целиком в noindex?

Нужно закрыть полностью облако меток в тег noindex. Речь о стандартном вордпрессовском виджете. То есть чтобы, например, перед и после этого дива noindex размещались (лучше валидный вариант):

<div class="tagcloud">...</div>

Ну или весь ul облака меток целиком вместе с заголовком.

Подскажите, как это можно реализовать?

Дополню.

Вообще в теме виджет облака меток выводится вот так:

$theme->display_widget('Tag_Cloud');

А вот этот самый Tag_Cloud задается среди прочих виджетов следующим образом:

            $wp_widgets_instances = array(
...
				'Tag_Cloud' => array( 'title' => 'Tag Cloud', 'taxonomy' => 'tags')
...
			);

Соответственно, может можно как-то в этом месте впихнуть noindex?

Или же чтобы весь ul закрыть в noindex, как-то вот здесь условие прописать, что если это виджет облака меток, то before_widget и after_widget с ноуиндексом:

    register_sidebar(array(
		'name' => __('Primary Sidebar', 'themater'),
		'id' => 'sidebar_primary',
		'description' => __('The primary sidebar widget area', 'themater'),
		'before_widget' => '<ul class="widget-container"><li id="%1$s" class="widget %2$s">',
		'after_widget' => '</li></ul>',
		'before_title' => '<p class="widgettitle">',
		'after_title' => '</p>'
	));
0
Гость 10 месяцев назад
  • 1
    stepan1187 cайт: www.weblancer.net/users/stepanko/?affili...
    <?php
    ob_start();
    $theme->display_widget('Tag_Cloud');
    $html = ob_get_contents();
    ob_end_clean();
    echo '<noindex>' . $html . '</noindex>';

    Пробуйте так сделать.

    Илья 10 месяцев назад

    Где следует вставить этот код? Вставил в functions.php, ничего не изменилось.

    stepan 10 месяцев назад

    Вообще в теме виджет облака меток выводится вот так:

    $theme->display_widget('Tag_Cloud');

    Вот и нужно заменить строку

    $theme->display_widget('Tag_Cloud');

    на

    ob_start();
    $theme->display_widget('Tag_Cloud');
    $html = ob_get_contents();
    ob_end_clean();
    echo '<noindex>' . $html . '</noindex>';
    Илья 10 месяцев назад

    Не помогло, к сожалению.

    Илья 10 месяцев назад

    Мне кажется оптимальным решением преобразовать вот этот код

        register_sidebar(array(
    		'name' => __('Primary Sidebar', 'themater'),
    		'id' => 'sidebar_primary',
    		'description' => __('The primary sidebar widget area', 'themater'),
    		'before_widget' => '<ul class="widget-container"><li id="%1$s" class="widget %2$s">',
    		'after_widget' => '</li></ul>',
    		'before_title' => '<p class="widgettitle">',
    		'after_title' => '</p>'
    	));

    Сделать, чтобы вот такой он и оставался для всех остальных виджетов. А если виджет облака меток, то тогда чтобы для него вот так проделывалось (с ноуиндексом):

        register_sidebar(array(
    		'name' => __('Primary Sidebar', 'themater'),
    		'id' => 'sidebar_primary',
    		'description' => __('The primary sidebar widget area', 'themater'),
    		'before_widget' => '<noindex><ul class="widget-container"><li id="%1$s" class="widget %2$s">',
    		'after_widget' => '</li></ul></noindex>',
    		'before_title' => '<p class="widgettitle">',
    		'after_title' => '</p>'
    	));

    Возможно ли как-то это задать? Или как-то прямо внутри этой функции register_sidebar условие прописать.

    stepan 10 месяцев назад

    Регистрируете второй сайдбар. Добавляете код:

    register_sidebar(array(
    		'name' => __('Primary Sidebar', 'themater'),
    		'id' => 'sidebar_primary',
    		'description' => __('The primary sidebar widget area', 'themater'),
    		'before_widget' => '<ul class="widget-container"><li id="%1$s" class="widget %2$s">',
    		'after_widget' => '</li></ul>',
    		'before_title' => '<p class="widgettitle">',
    		'after_title' => '</p>'
    	));
    
    register_sidebar(array(
    		'name' => __('Primary Sidebar 2', 'themater'),
    		'id' => 'sidebar_primary_2',
    		'description' => __('The primary sidebar widget area', 'themater'),
    		'before_widget' => '<noindex><ul class="widget-container"><li id="%1$s" class="widget %2$s">',
    		'after_widget' => '</li></ul></noindex>',
    		'before_title' => '<p class="widgettitle">',
    		'after_title' => '</p>'
    	));
    stepan 10 месяцев назад

    Потом находите, где выводится первый сайдбар. По логике вещей должен быть в sidebar.php
    И добавляете вывод своего сайдбара. На примере стандартной теме:

    /* было */
    <?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
    			<div id="widget-area" class="widget-area" role="complementary">
    				<?php dynamic_sidebar( 'sidebar-1' ); ?>
    			</div><!-- .widget-area -->
    		<?php endif; ?>
    
    /* ниже добавляем свой код */
    <?php if ( is_active_sidebar( 'sidebar_primary_2' ) ) : ?>
    			<div id="widget-area" class="widget-area" role="complementary">
    				<?php dynamic_sidebar( 'sidebar_primary_2' ); ?>
    			</div><!-- .widget-area -->
    		<?php endif; ?>
    Илья 10 месяцев назад

    Боюсь, что такой вариант не подойдет. Облако меток находится между другими виджетами в колонке. Сайдбар ведь не запихнуть внутрь другого.

    stepan 10 месяцев назад

    все верно, не запихнуть.
    Тогда нужно написать свой виджет: облако меток
    За основу взять тот, что используется на сайте. И переделать код: изменить имена классов.
    Если же виджет на функциях - то названия функций.
    Если используется стандартный виджет меток - то сменить только название класса. Найти виджет можно в папке wp-includes

    Илья 10 месяцев назад

    Спасибо за помощь. Попробую так сделать.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.