Cum să stilați în mod unic diferite categorii în WordPress

Publicat: 2017-09-20

Designul a fost întotdeauna unul dintre cele mai importante aspecte ale UI. O interfață de utilizator bună va duce la mai mulți vizitatori pe site-ul dvs. și în cele din urmă la mai multe venituri pentru dvs.

Există milioane de site-uri web live astăzi și trebuie să vă faceți site-ul suficient de unic pentru a se deosebi de concurenți.

Cât de popular este WordPress

Există multe moduri în care vă puteți construi site-ul, dar platforma pe care o alegeți pentru site-ul dvs. poate fi un factor major în determinarea cât de multă personalizare puteți face. Există multe platforme din care puteți alege, dar wordpress este unul dintre cele mai populare CMS din lume datorită simplității și capacității sale de personalizare. WordPress poate să nu fie la fel de simplu ca Wix sau Squarespace de utilizat, dar puterea sa de personalizare îl face atât de popular.

Care este problema de a fi atât de popular?

WordPress are o comunitate imensă (una foarte utilă) și puteți găsi soluții la orice problemă pe care o puteți întâlni în timpul călătoriei dvs. wordpress. Comunitatea este plină de informații și resurse, una dintre principalele resurse sunt temele wordpress. Puteți găsi mii de teme gratuite în biblioteca wordpess.org, iar numărul crește în fiecare zi.

WordPress fiind la fel de popular pe cât este, există o problemă cu atât de multă popularitate într-un mod diferit, deoarece o temă poate fi folosită de mai multe ori pe diferite site-uri web, site-urile care folosesc acea temă anume vor arăta oarecum similar. Prin urmare, site-ul dvs. poate să nu aibă unicitate dacă utilizați tema așa cum este.

De ce ați dori să stilați categoriile diferit?

În general, într-un blog sau un site bogat în conținut diferite subiecte sunt împărțite în diferite categorii. Aceasta este pagina în care un vizitator poate obține toate informațiile despre un anumit subiect și care vă oferă șansa de a prezenta categorii într-un mod unic pentru a le oferi o experiență grozavă.

Deci, stilul fiecărei categorii în mod diferit vă poate oferi un avantaj față de concurenții dvs., chiar dacă aceștia folosesc aceeași temă.

Diferența poate fi la fel de simplă ca culori diferite pentru fiecare categorie la diferite aspecte.

Să vedem cum poți face asta.

Modalități de stilare a categoriilor

În afară de temele gratuite, puteți achiziționa teme premium de pe diferite piețe. În general, aceste teme sunt încărcate cu funcții personalizate, dar chiar și atunci cele mai multe dintre ele nu vă vor oferi opțiunile de a vă stila categoriile în mod diferit.

Deoarece o temă poate fi utilizată diferit de la un site la altul, astfel încât autorul temei nu știe cum vei folosi tema.

Deci, ar trebui să știți cum să stilați categoriile diferit, există două moduri în care puteți face acest lucru.

  • Cu șabloane
  • Cu CSS

Acum să le vedem pe fiecare cu cazuri de utilizare diferite.

Cu șabloane

Dacă doriți să faceți o schimbare structurală în aspect, trebuie să utilizați șabloane. Indiferent dacă va avea bară laterală sau va fi o pagină cu lățime completă, cu șabloane, puteți controla aspectul paginii dvs.

Trebuie să lucreze pe tema copilului

O condiție prealabilă pentru utilizarea șabloanelor este că trebuie să utilizați teme secundare. Nu este că nu va funcționa în tema principală, dar problema modificării temei principale este că nu poți controla fișierele de acolo, odată ce tema este actualizată, toate modificările tale se vor pierde.

Puteți folosi unele teme premium pregătite pentru copii, dar dacă utilizați teme gratuite care, în general, nu includ nicio temă copil, trebuie să creați una. Odată ce ați pregătit tema pentru copilul dvs., vă puteți crea acum șabloanele de categorii.

Cum se creează un șablon de categorie

WordPress funcționează pe un sistem de șabloane care urmează o anumită ordine ierarhică. Trebuie să cunoașteți această ierarhie de șabloane pentru a crea șabloane de categorii.

Ordinea ierarhică pentru categorie este.

category-slug.phpcategory-id.phpcategory.phparchive.phpindex.php

Conform ordinului, wordpress va căuta category-slug.php unde slug înseamnă numele categoriei, să presupunem că aveți o categorie numită photoshop , așa că va căuta mai întâi category-photoshop.php dacă acel fișier nu există, va căuta category-id.php , adică va căuta orice fișier cu ID de categorie, de exemplu category-3.php dacă acesta nu este disponibil, va căuta category.php dacă și acest fișier lipsește, va încerca să folosească fișierul archive.php ca șablon dacă cel care nu este găsit este bine, atunci va folosi în sfârșit index.php ca șablon de bază.

Pentru a crea un șablon de categorie, trebuie să găsiți fișierul category.php în tema dvs., majoritatea temelor vor avea fișierul category.php , dar dacă nu îl găsiți atunci căutați archive.php .

Notă: În unele cadre, este posibil să nu găsiți deloc aceste fișiere pentru acele cazuri în care trebuie să urmați acel ghid special pentru cadre.

Acum presupunând că lucrați la o temă copil, copiați fișierul category.php sau archive.php din tema părinte și inserați-l în aceeași locație a folderului temei copil.

Category Template

De exemplu, dacă ați găsit fișierul necesar în directorul rădăcină al temei părinte, trebuie să-l plasați în directorul rădăcină al temei secundare în mod similar dacă a fost într-un subfolder, apoi creați un subfolder cu același nume și lipiți-l acolo.

Acum trecem să spunem că aveți o categorie numită photoshop redenumește noul fișier în tema copil, cum ar fi această category-photoshop.php și asta este, categoria photoshop va folosi acest șablon.

Acum să vedem asta printr-un exemplu.

Notă: Vom folosi aici tema Wordpress Twenty Seventeen pentru exemplele noastre, procesul va funcționa pe orice temă, dar structura html va diferi de la temă la temă.

Acum am creat un șablon de categorie, să facem ceva personalizare.

Vedeți cum arată șablonul actual.

Current Category Layout

Aceasta este ceea ce încercăm să realizăm.

New Category Layout

Structură de bază

Tema Douăzeci și șaptesprezece are un aspect cu două coloane, dar dorim un aspect cu o singură coloană, vom face acest șablon la lățime completă fără bară laterală.

În tema Twenty Seventeen nu există niciun fișier category.php , așa că am folosit archive.php ca șablon de bază și l-am numit category-photoshop.php .

Cod vechi (archive.php).

<?php
/**
 * The template for displaying archive pages
 *
 * @link https://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Seventeen
 * @since 1.0
 * @version 1.0
 */

get_header(); ?>

<div class="wrap">

<?php if ( have_posts() ) : ?>
 <header class="page-header">
 <?php
 the_archive_title( '<h1 class="page-title">', '</h1>' );
 the_archive_description( '<div class="taxonomy-description">', '</div>' );
 ?>
 </header><!-- .page-header -->
 <?php endif; ?>

<div id="primary" class="content-area">
 <main id="main" class="site-main" role="main">

<?php
 if ( have_posts() ) : ?>
 <?php
 /* Start the Loop */
 while ( have_posts() ) : the_post();

/*
 * Include the Post-Format-specific template for the content.
 * If you want to override this in a child theme, then include a file
 * called content-___.php (where ___ is the Post Format name) and that will be used instead.
 */
 get_template_part( 'template-parts/post/content', get_post_format() );

endwhile;

the_posts_pagination( array(
 'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Previous page', 'twentyseventeen' ) . '</span>',
 'next_text' => '<span class="screen-reader-text">' . __( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ),
 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyseventeen' ) . ' </span>',
 ) );

else :

get_template_part( 'template-parts/post/content', 'none' );

endif; ?>

</main><!-- #main -->
 </div><!-- #primary -->
 <?php get_sidebar(); ?>
</div><!-- .wrap -->

<?php get_footer();

Cod nou (categoria-photoshop.php).

<?php
/**
 * The template for displaying photoshop pages
 *
 * @link https://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Seventeen
 * @since 1.0
 * @version 1.0
 */

get_header(); ?>

<div class="wrap">

<?php if ( have_posts() ) : ?>
 <header class="page-header">
 <?php
 the_archive_title( '<h1 class="page-title">', '</h1>' );
 the_archive_description( '<div class="taxonomy-description">', '</div>' );
 ?>
 </header><!-- .page-header -->
 <?php endif; ?>

<div id="primary" class="content-area">
 <main id="main" class="site-main" role="main">

<?php
 if ( have_posts() ) : ?>
 <?php
 /* Start the Loop */
 while ( have_posts() ) : the_post();

/*
 * Include the Post-Format-specific template for the content.
 * If you want to override this in a child theme, then include a file
 * called content-___.php (where ___ is the Post Format name) and that will be used instead.
 */
 get_template_part( 'template-parts/post/content', get_post_format() );

endwhile;

the_posts_pagination( array(
 'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Previous page', 'twentyseventeen' ) . '</span>',
 'next_text' => '<span class="screen-reader-text">' . __( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ),
 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyseventeen' ) . ' </span>',
 ) );

else :

get_template_part( 'template-parts/post/content', 'none' );

endif; ?>

</main><!-- #main -->
 </div><!-- #primary -->
</div><!-- .wrap -->

<?php get_footer();

Aici puteți vedea că am eliminat <?php get_sidebar(); ?> <?php get_sidebar(); ?> deoarece acest șablon nu va avea bare laterale.

Acest lucru va elimina bara laterală, dar aspectul nu este încă pe lățime completă, trebuie să facem câteva ajustări CSS. Amintiți-vă că toate ajustările CSS vor fi făcute la fișierele CSS cu teme secundare, nu la tema părinte.

WordPress adaugă o clasă unică fiecărei categorii cu numele categoriei în corpul său, cum ar fi această category-photoshop , puteți viza acea clasă pentru a stila pagina.

Category Class Name

CSS:

@media screen and (min-width: 48em) {
.category-photoshop #primary {
 float: none;
 width: 100%;
}
}

Folosind media query pur și simplu pentru a se potrivi cu foaia de stil a temei părinte.

Adăugarea descriere a categoriei

Puteți afișa o descriere suplimentară a fiecărei categorii adăugând descrierea în secțiunea categorii. Furnizarea de informații suplimentare va ajuta vizitatorii să înțeleagă mai bine subiectul, dar puteți face această secțiune mai interesantă, oferind un aspect unic fiecărei categorii.

Conform designului nostru, vom avea nevoie de o imagine personalizată în partea stângă și numele categoriei cu descriere în partea dreaptă.

<?php
/**
 * The template for displaying photoshop category
 *
 * @link https://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Seventeen
 * @since 1.0
 * @version 1.0
 */

get_header(); ?>

<div class="wrap">

<?php if ( have_posts() ) : ?>
 <header class="page-header">
 <div class="header-category-img"><img src="<?php echo get_stylesheet_directory_uri(); ?>/assets/images/photoshop-banner.jpg" alt="Photoshop"></div>
 <div class="header-category-title">
 <h1 class="page-title"><?php single_term_title()?></h1>
 <?php 
 the_archive_description( '<div class="taxonomy-description">', '</div>' );
 ?>
 </div>
 </header><!-- .page-header -->
 <?php endif; ?>

<div id="primary" class="content-area">
 <main id="main" class="site-main" role="main">

<?php
 if ( have_posts() ) : ?>
 <?php
 /* Start the Loop */
 while ( have_posts() ) : the_post();

/*
 * Include the Post-Format-specific template for the content.
 * If you want to override this in a child theme, then include a file
 * called content-___.php (where ___ is the Post Format name) and that will be used instead.
 */
 get_template_part( 'template-parts/post/content-photoshop', get_post_format() );

endwhile;

the_posts_pagination( array(
 'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Previous page', 'twentyseventeen' ) . '</span>',
 'next_text' => '<span class="screen-reader-text">' . __( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ),
 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyseventeen' ) . ' </span>',
 ) );

else :

get_template_part( 'template-parts/post/content-photoshop', 'none' );

endif; ?>

</main><!-- #main -->
 </div><!-- #primary -->
</div><!-- .wrap -->

<?php get_footer();

CSS:

.page-header {
 border-bottom: 1px solid #ccc;
 box-sizing: border-box;
 margin-bottom: 1.5em;
 padding-bottom: 0.5em;
}
.header-category-title {
 float: left;
 padding-top: 15px;
 width: 85%;
}
.header-category-img {
 float: left;
 width: 15%;
}

Page Header

Puteți vedea că am făcut destul de multe modificări în secțiunea page-header dar cea mai importantă este single_term_title() deoarece vreau să afișez numai numele categoriei ca acest Photoshop în loc de Category:Photoshop .

Trecând peste.

Vizualizare casetă

Am făcut modificările de bază, cum ar fi realizarea unui aspect cu o singură coloană și am modificat secțiunea de descriere a categoriei, acum haideți să facem ceva mai avansat, vom converti lista postării din vizualizarea listă într-o vizualizare în bandă sau casetă cu 3 articole pe coloană.

Pentru a face aceste modificări, trebuie să modificăm calea get_template_part , deoarece conținutul este apelat dintr-o locație diferită aici, dar în unele teme este posibil să găsiți conținutul plasat direct în șablonul de bază.

get_template_part( 'template-parts/post/content-photoshop', get_post_format() );

Acum, pentru a modifica acea pagină de conținut, trebuie să copiați fișierul din tema părinte în tema secundară și să-l plasați în aceeași structură de foldere, apoi să-l redenumiți după cum doriți.

Aici am copiat fișierul content.php din tema părinte și l-am lipit ca content-photoshop.php în tema copil. Este redenumit deoarece orice modificări vor fi făcute aici vor afecta numai acest șablon.

Content Template

Cod (conținut-photoshop.php).

<?php
/**
 * Template part for displaying photoshop posts
 *
 * @link https://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Seventeen
 * @since 1.0
 * @version 1.2
 */

?>

<article id="post-<?php the_ID(); ?>" <?php post_class("one-third"); ?> >
 <?php
 if ( is_sticky() && is_home() ) :
 echo twentyseventeen_get_svg( array( 'icon' => 'thumb-tack' ) );
 endif;
 ?>
 <?php if ( '' !== get_the_post_thumbnail() && ! is_single() ) : ?>
 <div class="post-thumbnail">
 <a href="<?php the_permalink(); ?>">
 <?php the_post_thumbnail( 'twentyseventeen-featured-image' ); ?>
 </a>
 </div><!-- .post-thumbnail -->
 <?php endif; ?>
 <header class="entry-header1">
 <?php
 if ( is_single() ) {
 the_title( '<h1 class="entry-title">', '</h1>' );
 } elseif ( is_front_page() && is_home() ) {
 the_title( '<h3 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h3>' );
 } else {
 the_title( '<h2 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h2>' );
 }
 if ( 'post' === get_post_type() ) {
 echo '<div class="entry-meta">';
 if ( is_single() ) {
 twentyseventeen_posted_on();
 } else {
 echo twentyseventeen_time_link();
 twentyseventeen_edit_link();
 };
 echo '</div><!-- .entry-meta -->';
 };
 ?>
 </header><!-- .entry-header -->

<div class="entry-content">
 <?php
 /* translators: %s: Name of current post */
 if ( is_single() ) :
 the_content( sprintf(
 __( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ),
 get_the_title()
 ) );

ks29so_link_pages( array(
 'before' => '<div class="page-links">' . __( 'Pages:', 'twentyseventeen' ),
 'after' => '</div>',
 'link_before' => '<span class="page-number">',
 'link_after' => '</span>',
 ) );
 else:

the_excerpt( sprintf(
 __( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ),
 get_the_title()
 ) );

ks29so_link_pages( array(
 'before' => '<div class="page-links">' . __( 'Pages:', 'twentyseventeen' ),
 'after' => '</div>',
 'link_before' => '<span class="page-number">',
 'link_after' => '</span>',
 ) );
 endif;
 ?>
 </div><!-- .entry-content -->

<?php
 if ( is_single() ) {
 twentyseventeen_entry_footer();
 }
 ?>

</article><!-- #post-## -->

Acum puține lucruri de remarcat aici că am adăugat o clasă personalizată one-third în secțiunea de articole și am schimbat tipul de conținut în excerpt pentru vizualizarea casetei, alte modificări structurale se explică de la sine.

CSS:

.category-photoshop main{
 margin:0 -15px; 
}
.one-third {
 box-sizing: border-box;
 float: left;
 padding: 0 15px;
 width: 33.333%;
}
.one-third .post-container {
 border: 1px solid #ccc;
 padding: 10px;
}
.one-third .post-thumbnail{
 margin-bottom:0;
}
.one-third h2{
 margin-bottom:0.2em;
}

Acum, așa arată aspectul.

New Category Layout

Numai cu CSS

Dacă nu vă simțiți confortabil cu codul php, chiar și atunci, puteți stila paginile categoriei numai cu CSS, dar aceste modificări vor fi limitate într-un mod în care nu puteți adăuga sau modifica codul, puteți stila doar elementele existente.

Să vedem printr-un exemplu cum, chiar și cu aceste limitări, puteți face paginile dvs. de categorii unice.

Să presupunem că vrem să stilăm categoria noastră wordpress din asta.

Old WordPress Category

la acest.

New WordPress Category

Stil de bază

Puteți schimba foarte ușor culoarea de fundal cu CSS, țintind clasa pe care o oferă wordpress.

Ceva de genul.

CSS:

.category-wordpress .site-content-contain {
 background-color:#eaeaea;
}
Adăugarea pictogramei la titlul categoriei

Puteți adăuga pictograme unice la fiecare categorie cu imagini de fundal, conform cerințelor aici vom adăuga una numai la categoria noastră wordpress.

CSS:

.category-wordpress .page-header {
 border-bottom: 1px solid #ccc;
 margin-bottom: 1.5em;
 padding-bottom: 0.5em;
}
.category-wordpress .page-header h1{
 background:url("assets/images/wordpress-logo.png") no-repeat left center;
 padding-bottom:5px;
 padding-left:35px; 
}
Realizarea paginii cu lățimea completă

Puteți converti două sau mai multe pagini de coloană într-o pagină cu lățime completă, cel puțin vizual, prin CSS.

CSS:

.category-wordpress:not(.error404) #primary{
 float: none;
 width: 100%;
}

.category-wordpress #secondary{
 display:none; 
}

Știu că este un hack CSS și nu este recomandabil ca cea mai bună practică, dar vă puteți atinge obiectivul de design în acest fel, mai ales dacă nu aveți suficientă încredere în lucrul cu șabloane.

Hidden Element

Dar dacă puteți lucra cu șabloane, atunci această metodă de a crea o pagină cu lățime completă nu este recomandabilă ca scurtătură, deoarece tot ceea ce faceți este să o ascundeți pentru a nu se afișa în browser cât timp rămâne în DOM.

Concluzie

După cum puteți vedea, puteți face multe pentru a stila diferite categorii, iar exemplele menționate mai sus sunt doar un punct de plecare, dar posibilitățile depind de capacitatea dumneavoastră de a lucra cu șabloane și CSS. În funcție de nivelul de calificare, puteți alege modul în care doriți să vă stilați categoriile.

Așadar, cunoașteți alte modalități de a stila diferite categorii diferit, anunțați-ne în secțiunea de comentarii de mai jos.