Hur man anvÀnder anpassade inlÀggstyper i WordPress 3.0

Creating custom post types in WordPress

Vill du lÀra dig att enkelt skapa anpassade inlÀggstyper i WordPress? Anpassade inlÀggstyper förvandlar en WordPress-webbplats frÄn en bloggplattform till ett kraftfullt Content Management System (CMS).

I grund och botten lÄter de dig gÄ utöver inlÀgg och sidor genom att skapa olika innehÄllstyper för din webbplats.

I den hÀr artikeln visar vi dig hur du enkelt skapar anpassade inlÀggstyper i WordPress. Vi lÀr dig tvÄ metoder och du kan vÀlja en som ser lÀttare ut för dig.

Vad Àr anpassad posttyp i WordPress?

Anpassade inlÀggstyper Àr innehÄllstyper som inlÀgg och sidor. Eftersom WordPress utvecklades frÄn en enkel bloggplattform till ett robust CMS, faststÀlldes termen post. En inlÀggstyp kan dock vara vilken typ av innehÄll som helst.

Som standard kommer WordPress med dessa inlÀggstyper:

Navigationsmeny för version av bifogad sida

Du kan skapa dina egna anpassade inlÀggstyper och kalla dem vad du vill.

Om du till exempel driver en webbplats för filmrecensioner, skulle du förmodligen vilja skapa en posttyp för filmrecensioner. Den hÀr inlÀggstypen kan ha olika anpassade fÀlt och till och med en egen anpassad kategoristruktur.

Andra exempel pÄ inlÀggstyper Àr portfölj, vittnesmÄl, produkter etc.

MÄnga populÀra WordPress-plugins anvÀnder redan anpassade inlÀggstyper för att lagra data pÄ din WordPress-webbplats. Följande Àr nÄgra topp-plugins som anvÀnder anpassade inlÀggstyper.

WooCommerce – LĂ€gger till en produktanpassad posttyp till din WordPress-webbplats. WPForms – Skapar en wpforms-inlĂ€ggstyp för att lagra alla dina formulĂ€r MemberPress – LĂ€gger till en medlempressprodukt anpassad inlĂ€ggstyp

NÀr behöver jag en anpassad inlÀggstyp?

Kolla in vÄr artikel om nÀr behöver du verkligen anpassade inlÀggstyper eller taxonomier i WordPress.

Ta ocksÄ en titt pÄ WPBeginners avsnitt och ordlista. Dessa Àr anpassade inlÀggstyper som vi skapade för att hÄlla dessa avsnitt Ätskilda frÄn vÄra dagliga bloggartiklar. Det hjÀlper oss att bÀttre organisera vÄrt webbplatsinnehÄll.

Du kommer ocksÄ att mÀrka att vi anvÀnder anpassade taxonomier för dem istÀllet för kategorier eller taggar.

Med det sagt, lÄt oss ta en titt pÄ hur man enkelt skapar anpassade inlÀggstyper i WordPress för eget bruk.

Metod 1. Skapa en anpassad posttyp – det enkla sĂ€ttet

Det enklaste sÀttet att skapa en anpassad inlÀggstyp i WordPress Àr att anvÀnda ett plugin. Denna metod rekommenderas för nybörjare eftersom den Àr sÀker och super lÀtt.

Det första du behöver göra Àr att installera och aktivera plugin för anpassad posttyp UI. Efter aktivering lÀgger plugin till ett nytt menyalternativ i din WordPress-administratörsmeny som heter.

GÄ nu till CPT UI »LÀgg till nytt för att skapa en ny anpassad posttyp.

LĂ€gg till ny anpassad posttyp

Först mÄste du ange en slug för din anpassade inlÀggstyp. Denna slug kommer att anvÀndas i webbadressen och i WordPress-frÄgor, sÄ den kan bara innehÄlla bokstÀver och siffror.

Nedan mÄste du ange plural- och singularnamn för din anpassade inlÀggstyp.

DĂ€refter kan du eventuellt klicka pĂ„ lĂ€nken som sĂ€ger ‘Befolk ytterligare etiketter baserat pĂ„ valda etiketter’. Om du gör det fyller du i resten av etikettfĂ€lten nedan.

BlĂ€ddra ner till avsnittet “Ytterligare etiketter” och hĂ€rifrĂ„n kan du ge en beskrivning för din inlĂ€ggstyp och Ă€ndra etiketter.

Post typ etiketter

Etiketter kommer att anvÀndas i hela WordPress-anvÀndargrÀnssnittet nÀr du hanterar innehÄll i just den inlÀggstypen.

DÀrefter kommer alternativet för instÀllning av inlÀggstyp. HÀrifrÄn kan du stÀlla in olika attribut för din inlÀggstyp. Varje alternativ kommer med en kort beskrivning som förklarar vad den gör.

InstÀllningar för inlÀggstyp

Du kan till exempel vÀlja att inte göra en inlÀggstyp hierarkisk som sidor eller omvÀnd kronologisk som inlÀgg.

Under de allmÀnna instÀllningarna ser du alternativet att vÀlja vilka redigeringsfunktioner som denna inlÀggstyp skulle stödja. Kontrollera bara de alternativ som du vill ska inkluderas.

Alternativ som stöds

Klicka slutligen pĂ„ knappen ‘LĂ€gg till inlĂ€ggstyp’ för att spara och skapa din anpassade inlĂ€ggstyp.

Det Àr allt, du har framgÄngsrikt skapat din anpassade inlÀggstyp. Du kan fortsÀtta och börja lÀgga till innehÄll.

Vi kommer att visa dig hur du visar din anpassade inlÀggstyp pÄ din webbplats senare i den hÀr artikeln.

Skapa en anpassad posttyp manuellt

Problemet med att anvÀnda ett plugin Àr att dina anpassade inlÀggstyper försvinner nÀr plugin inaktiveras. All data du har i dessa anpassade inlÀggstyper kommer fortfarande att finnas dÀr, men din anpassade inlÀggstyp kommer att avregistreras och kommer inte att vara tillgÀnglig frÄn adminomrÄdet.

Om du arbetar pÄ en klientwebbplats och inte vill installera ett annat plugin-program kan du manuellt skapa din anpassade inlÀggstyp genom att lÀgga till önskad kod i ditt temas funktioner.php-fil eller i ett platsspecifikt plugin (Se: Anpassat inlÀgg Typer Debattfunktioner.php eller Plugin).

Först visar vi ett snabbt och fullt fungerande exempel sÄ att du förstÄr hur det fungerar. Ta en titt pÄ den hÀr koden:


// Our custom post type function
function create_posttype() {

	register_post_type( 'movies',
	// CPT Options
		array(
			'labels' => array(
				'name' => __( 'Movies' ),
				'singular_name' => __( 'Movie' )
			),
			'public' => true,
			'has_archive' => true,
			'rewrite' => array('slug' => 'movies'),
			'show_in_rest' => true,

		)
	);
}
// Hooking up our function to theme setup
add_action( 'init', 'create_posttype' );

Vad den hĂ€r koden gör Ă€r att den registrerar en posttyp ‘filmer’ med en rad argument. Dessa argument Ă€r alternativen för vĂ„r anpassade posttyp.

Denna array har tvÄ delar, den första delen Àr mÀrkt, som i sig Àr en array. Den andra delen innehÄller andra argument som allmÀn synlighet, har arkiv, slug och show_in_rest möjliggör stöd för blockredigerare.

LÄt oss nu titta pÄ en detaljerad kod som lÀgger till fler alternativ för din anpassade posttyp.



/*
* Creating a function to create our CPT
*/

function custom_post_type() {

// Set UI labels for Custom Post Type
	$labels = array(
		'name'                => _x( 'Movies', 'Post Type General Name', 'twentytwenty' ),
		'singular_name'       => _x( 'Movie', 'Post Type Singular Name', 'twentytwenty' ),
		'menu_name'           => __( 'Movies', 'twentytwenty' ),
		'parent_item_colon'   => __( 'Parent Movie', 'twentytwenty' ),
		'all_items'           => __( 'All Movies', 'twentytwenty' ),
		'view_item'           => __( 'View Movie', 'twentytwenty' ),
		'add_new_item'        => __( 'Add New Movie', 'twentytwenty' ),
		'add_new'             => __( 'Add New', 'twentytwenty' ),
		'edit_item'           => __( 'Edit Movie', 'twentytwenty' ),
		'update_item'         => __( 'Update Movie', 'twentytwenty' ),
		'search_items'        => __( 'Search Movie', 'twentytwenty' ),
		'not_found'           => __( 'Not Found', 'twentytwenty' ),
		'not_found_in_trash'  => __( 'Not found in Trash', 'twentytwenty' ),
	);
	
// Set other options for Custom Post Type
	
	$args = array(
		'label'               => __( 'movies', 'twentytwenty' ),
		'description'         => __( 'Movie news and reviews', 'twentytwenty' ),
		'labels'              => $labels,
		// Features this CPT supports in Post Editor
		'supports'            => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),
		// You can associate this CPT with a taxonomy or custom taxonomy. 
		'taxonomies'          => array( 'genres' ),
		/* A hierarchical CPT is like Pages and can have
		* Parent and child items. A non-hierarchical CPT
		* is like Posts.
		*/	
		'hierarchical'        => false,
		'public'              => true,
		'show_ui'             => true,
		'show_in_menu'        => true,
		'show_in_nav_menus'   => true,
		'show_in_admin_bar'   => true,
		'menu_position'       => 5,
		'can_export'          => true,
		'has_archive'         => true,
		'exclude_from_search' => false,
		'publicly_queryable'  => true,
		'capability_type'     => 'post',
		'show_in_rest' => true,

	);
	
	// Registering your Custom Post Type
	register_post_type( 'movies', $args );

}

/* Hook into the 'init' action so that the function
* Containing our post type registration is not 
* unnecessarily executed. 
*/

add_action( 'init', 'custom_post_type', 0 );


Som du kan se har vi lagt till mÄnga fler alternativ till den anpassade posttypen med den hÀr koden. Det kommer att lÀgga till fler funktioner som stöd för versioner, utvald bild, anpassade fÀlt och mer.

Vi har ocksÄ associerat denna anpassade posttyp med en anpassad taxonomi som kallas genrer.

Du kanske ocksÄ mÀrker den del dÀr vi har satt det hierarkiska vÀrdet till att vara falskt. Om du vill att din anpassade inlÀggstyp ska fungera som Pages, kan du stÀlla in detta vÀrde till true.

En annan sak som ska noteras Àr den upprepade anvÀndningen av tjugotvÄ strÀngar, detta kallas textdomÀn. Om ditt tema Àr klart för översÀttning och du vill att dina anpassade inlÀggstyper ska översÀttas mÄste du nÀmna textdomÀn som anvÀnds av ditt tema.

Du kan hitta temat textdomÀn inuti style.css-filen i din temakatalog. TextdomÀnen kommer att nÀmnas i filens rubrik.

Visa anpassade inlÀggstyper pÄ din webbplats

WordPress levereras med inbyggt stöd för att visa dina anpassade inlÀggstyper. NÀr du har lagt till nÄgra objekt i din nya anpassade inlÀggstyp Àr det dags att visa dem pÄ din webbplats.

Det finns ett par metoder som du kan anvÀnda, var och en har sina egna fördelar.

Visar anpassad posttyp med standardarkivmall

Först kan du helt enkelt gÄ till Utseende »Menyer och lÀgg till en anpassad lÀnk till din meny. Den hÀr anpassade lÀnken Àr lÀnken till din anpassade inlÀggstyp.

LÀgg till inlÀggstyp i din navigeringsmeny

Om du anvÀnder SEO-vÀnliga permalÀnkar kommer din CPT-URL sannolikt att vara ungefÀr sÄ hÀr:

http://exempel.se/filmer

Om du inte anvÀnder SEO-vÀnliga permalÀnkar kommer din anpassade webbadress för inlÀggstyp att vara ungefÀr sÄ hÀr:

http://exempel.com/?post_type=filmer

Glöm inte att ersÀtta exempel.com med ditt eget domÀnnamn och filmer med ditt anpassade posttypnamn.

Spara din meny och besök sedan front-end pÄ din webbplats. Du kommer att se den nya menyn du lade till, och nÀr du klickar pÄ den visar den din anpassade arkivsida för inlÀggstyp med hjÀlp av arkiv.php-mallfilen i ditt tema.

AnvÀnda anpassade mallar för CPT-arkiv och enskilda poster

Om du inte gillar utseendet pÄ arkivsidan för din anpassade inlÀggstyp, kan du anvÀnda dedikerad mall för anpassad inlÀggstypsarkiv.

För att göra det Àr allt du behöver göra att skapa en ny fil i din temakatalog och ge den namnet archive-films.php. ErsÀtt filmer med namnet pÄ din anpassade inlÀggstyp.

För att komma igÄng kan du kopiera innehÄllet i ditt temas arkiv.php-fil till arkiv-filmer.php-mall och sedan börja Àndra det för att möta dina behov.

NÀr arkivsidan för din anpassade inlÀggstyp nÄs kommer den hÀr mallen att anvÀndas för att visa den.

PÄ samma sÀtt kan du ocksÄ skapa en anpassad mall för din inlÀggstyps visning av enstaka poster. För att göra det mÄste du skapa single-movies.php i din temakatalog. Glöm inte att ersÀtta filmer med namnet pÄ din anpassade inlÀggstyp.

Du kan komma igÄng genom att kopiera innehÄllet i ditt temas single.php-mall till singel-films.php-mall och sedan börja Àndra det för att möta dina behov.

Visar anpassade inlÀggstyper pÄ förstasidan

En fördel med att anvÀnda anpassade inlÀggstyper Àr att det hÄller dina anpassade innehÄllstyper borta frÄn dina vanliga inlÀgg. Men om du vill att de ska visas i ditt vanliga inlÀgg, kan du göra det genom att lÀgga till den hÀr koden i tematets funktioner.php-fil eller ett platsspecifikt plugin:


add_action( 'pre_get_posts', 'add_my_post_types_to_query' );

function add_my_post_types_to_query( $query ) {
	if ( is_home() && $query->is_main_query() )
		$query->set( 'post_type', array( 'post', 'movies' ) );
	return $query;
}

Glöm inte att ersÀtta filmer med din anpassade inlÀggstyp.

FrÄga efter anpassade inlÀggstyper

Om du kÀnner till kodningen och vill köra loopfrÄgor i dina mallar, sÄ hÀr gör du det (Relaterat: Vad Àr en loop?).

Genom att frÄga databasen kan du hÀmta objekt frÄn en anpassad inlÀggstyp.


<?php 
$args = array( 'post_type' => 'movies', 'posts_per_page' => 10 );
$the_query = new WP_Query( $args ); 
?>
<?php if ( $the_query->have_posts() ) : ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?> 
</div>
<?php wp_reset_postdata(); ?>
<?php else:  ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

I den hÀr koden har vi först definierat inlÀggstyp och inlÀgg per sida i argumenten för vÄr nya WP_Query-klass.

Efter det körde vi vÄr frÄga, hÀmtade inlÀggen och visade dem inuti slingan.

Visar anpassade inlÀggstyper i widgets

Du kommer att mÀrka att det finns en standardwidget i WordPress för att visa senaste inlÀgg, men det tillÄter dig inte att vÀlja en anpassad inlÀggstyp.

Vad hÀnder om du vill visa de senaste posterna frÄn din nyskapade inlÀggstyp i en widget? Det finns ett enkelt sÀtt att göra detta.

Det första du behöver göra Àr att installera och aktivera plugin-modulen Ultimate Posts Widget. Vid aktivering, gÄ helt enkelt till Utseende »Widgets och dra och slÀpp Ultimate Posts-widgeten till ett sidofÀlt.

Ultimate posts widget

Denna kraftfulla widget lÄter dig visa senaste inlÀgg frÄn alla inlÀggstyper. Du kan ocksÄ visa utdrag med en lÀs mer lÀnk eller till och med visa en utvald bild bredvid inlÀggets titel.

Konfigurera widgeten genom att vÀlja de alternativ du vill ha och genom att vÀlja din anpassade posttyp. Spara dÀrefter dina Àndringar och se widgeten i aktion pÄ din webbplats.

Mer avancerade anpassade posttypjusteringar

Det finns sÄ mycket mer du kan göra med dina anpassade inlÀggstyper. Du kan lÀra dig att lÀgga till dina anpassade inlÀggstyper i huvud RSS-flöde eller skapa en separat feed för varje anpassad inlÀggstyp.

För fler hack, se vÄr lista över de mest anvÀndbara tutorials för WordPress-anpassade inlÀggstyper.

Om du letar efter en lösning utan kod för att anpassa dina anpassade arkivsidor för inlÀggstyp rekommenderar vi att du tittar pÄ ett WordPress-sidbyggare-plugin som Beaver Builder eller Divi eftersom de bÄda kan hjÀlpa dig att göra det.

Vi hoppas att den hÀr artikeln hjÀlpte dig att lÀra dig att skapa anpassade inlÀggstyper i WordPress. Du kanske ocksÄ vill se vÄr guide om hur du kan öka din webbtrafik med praktiska tips.

Om du gillade den hÀr artikeln, prenumerera sedan pÄ vÄr YouTube-kanal för WordPress-sjÀlvstudier. Du hittar oss ocksÄ pÄ Twitter och Facebook.