Изменить CSS постов в категории в Wordpress

Я новичок в Wordpress и CSS, надеюсь, вы, ребята, сможете мне помочь. Я хочу изменить положение сайта .site-branding из всех сообщений в определенной категории.

Я могу изменить site-branding в моем стиле. Мне нравится, но это влияет на весь сайт, включая все страницы, сообщения и категории.

.site-branding {
    left: 50%;
    position: absolute;
    top: 40%;
    -webkit-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);

Надеюсь, вы, ребята, можете мне помочь.

Заранее спасибо.

5 ответов

Спасибо за усилия, но я немного помог и решил проблему.

Я добавил этот фильтр в мои functions.php

function pn_body_class_add_categories( $classes ) {

// Only proceed if we're on a single post page
if ( !is_single() )
    return $classes;

// Get the categories that are assigned to this post
$post_categories = get_the_category();

// Loop over each category in the $categories array
foreach( $post_categories as $current_category ) {

    // Add the current category's slug to the $body_classes array
    $classes[] = 'category-' . $current_category->slug;

}

// Finally, return the $body_classes array
return $classes;
}
add_filter( 'body_class', 'pn_body_class_add_categories' );

Этот фильтр добавит имя категории в качестве класса к body на отдельных постах.

Например, если категория называется Новости, она добавит category-news к телу как класс на отдельных постах.

Как только это будет сделано, вы можете использовать этот класс тела только для цели .site-branding на отдельные сообщения в категории новостей, как это:

.single.category-news .site-branding {
left: 20%;
}

WordPress дает вам возможность настроить таргетинг на категорию, добавив ее имя в таблицу стилей (обычно "category-x"), и тогда вы сможете уникальным образом настроить таргетинг на любую и все категории в вашем CSS.

Вот отличная пошаговая статья для нацеливания этого класса в вашем CSS.

Примером может быть:

<body class="archive category category-agriculture category-40">

С категорией сельское хозяйство является тем классом, на который вы хотите нацелиться следующим образом:

body.category-agriculture .site-branding {color: red;}

Wordpress может добавить категорию как класс к тегу body. Если это так для вашей темы, то вы можете добавить специальное правило CSS для категории.

.category .site-branding {
    /* your css rules here */
}

Для этого, я думаю, вам нужно будет добавить условное выражение PHP в ваш header.php, который проверяет, относится ли текущая публикация к этой конкретной категории, а затем добавить еще один класс к тегу логотипа, который меняет его положение.

Было бы что-то вроде этого:

<h1 class="site-branding <?php in_array( YOUR_CATEGORY_ID, get_the_category((get_the_ID()) ) ? ' new-posision' : '' ; ?>"></h1>

Для этого вам, скорее всего, понадобятся Javascript и Jquery.

Так что, если это ваша структура URL: www.mysite.com/home/category/,

(function($){
var $pathArray = window.location.pathname.split('/');
var $location = pathArray[2]
var $branding = $(".site-branding")
if ($location == 'cat1' || $location == 'cat2') {
    $branding.css({
        'left' : '50%',
        'position' : 'absolute',
        'top' : '40%',
        '-webkit-transform' : 'translate(-50%, -50%)',
        '-ms-transform' : 'translate(-50%, -50%)',
        'transform' : 'translate(-50%, -50%)'
    });
}
});

Предполагая, что вы запускаете дочернюю тему в своем экземпляре WordPress (а если нет, вам определенно следует), вы можете добавить этот скрипт в конец файла header.php.

Другие вопросы по тегам