Как прописать, если категория x, то картинка x?

Есть страница, где разные собраны товары из разных категорий
У меня для вывода постов (карточек товаров) такой код:
<?php
                $temp = $wp_query; $wp_query= null;
                $wp_query = new WP_Query(); $wp_query->query('category_name=for_heating&showposts=-1' . '&paged='.$paged);
                 while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
               <div class="col-lg-4 <?php $posttags = get_the_tags();
                    if( $posttags ){
                    foreach( $posttags as $tag ){
                    echo $tag->slug. ' ';
                    }
                } ?>">
		<div class="card_item" id="spoiler1">
			<div class="content-item">
				<div class="title_svg">
					<h4 class="h4_cards">
						<?php the_title() ?>
					</h4>
				       <div class="svg_card">
				         <?php the_post_thumbnail( 'full', $svg_attr ); ?> 
				        </div>
			        </div>
                          </div>
		    </div>
		</div>
<?php endwhile; ?>


<?php the_post_thumbnail( 'full', $svg_attr ); ?> - через такую штуку сейчас выводится картинка ( из админким)
На выходе получается svg, но в теге img, а через него нельзя поменять заливку

Ломаю голову и не могу придумать как прописать, что если категория x, то выводим svg x и при hover fill: #новыйцвет , если категория y, то y и так далее

Вы поможете любой идеей или хотя бы наброском!
Спасибо!
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
Если на коленке, то так:
function wpp_change_svg_img_color( $url, $color ) {
	$content                 = file_get_contents( $url );
	$doc                     = new DOMDocument();
	$doc->preserveWhiteSpace = false;
	$doc->loadXML( $content ) or die( 'Failed to load SVG  ' . $url );
	$paths = $doc->getElementsByTagName( "path" );
	foreach ( $paths as $path ) {
		$path->setAttribute( 'fill', $color );
		$path->setAttribute( 'style', 'fill:' . $color );
		$content = $doc->saveXML( $doc );
	}

	return $content;
}

$url = the_post_thumbnail_url( 'full' ); // url миниатюры
$color = '#000000'; #нужный вам цвет
printf( '<img src="%s" alt="">', wpp_change_svg_img_color( $url, $color) );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы