Wie du in nur 5 Minuten einen Post-Type in WordPress mit PHP erstellst.

Marc Wag­ner

Okto­ber 30, 2020

4 min read|

Heu­te will ich euch zei­gen, wie ein­fach es mög­lich ist, in nur 5 Minu­ten einen eige­nen Post-Type für Word­Press zu erzeu­gen.

Lasst uns daher direkt los­le­gen.

Post-Type anlegen mit PHP #

Zunächst legen wir eine neue Datei in unse­rem Child-The­­me an und öff­nen die­se. Ich nen­ne die Datei der Ein­fach­heit hal­ber “WordPressCustomPostType.php”.

Als Nächs­tes erstel­len wir unse­re Klas­se, die für das Ver­wal­ten unse­res neu­en Post-Types zustän­dig sein wird. Das sieht dann wie folgt aus:

<?php
if(!defined('ABSPATH')){
	exit();
}

class WordPressCustomPostType{
	public function __construct(){}
}

new WordPressCustomPostType();

Jetzt brau­chen wir eine Funk­ti­on, die dafür sorgt, das Word­Press dar­über infor­miert wird, das wir einen neu­en Post-Type haben der gela­den wer­den soll. Dafür ver­wen­den wir die Funk­ti­on “register_post_type”.

public function wp_registerPostType(){
	$labels = array(
		'name' => __( 'Custom Post Type' )
	);

	$args = array(
		'labels'          => $labels,
		'capability_type' => 'page',
		'show_ui'         => true,
		'supports'        => array( 'title', 'editor', 'thumbnail', 'revisions', 'excerpt' )
	);

	register_post_type( 'my_custom_post_type', $args );
}

Kur­ze Erklä­rung: In die­ser Anlei­tung befas­sen wir uns nur mit den mini­ma­len Anga­ben die man benö­tigt, um einen eige­nen Post-Type in Word­Press zu erstel­len. Wenn du mehr Anga­ben machen möch­test, kannst du die­se jeder­zeit hin­zu­fü­gen. Nütz­li­che Infor­ma­tio­nen fin­dest du dabei direkt in der Word­Press Code Refe­rence:

Zu guter Letzt müs­sen wir Word­Press mit­tei­len, das unser Code aus­ge­führt wer­den soll, sobald alle Core Funk­tio­nen gela­den wur­den. Dafür erwei­tern wir den Kon­struk­tor und fügen ein neu­es Event hin­zu:

public function __construct() {
	add_action( 'init', array($this, 'wp_registerPostType' ) );
}

Jetzt das gan­ze abspei­chern und wir kön­nen ins Word­Press Backend wech­seln, um uns unse­ren neu­en Post-Type anzei­gen zu las­sen.

WordPress Custom Post Type Backend Beispiel
Word­Press Cus­tom Post-Type.

Du möch­test mehr erfah­ren? Dann wirf einen Blick in die Code Refe­rence von Word­Press.

Ausgeben der Daten mit einem WordPress Shortcode #

Eine Mög­lich­keit, um auf dei­ne Daten zuzu­grei­fen, ist über Short­codes. Ein­mal ange­legt, kannst du den Short­code über­all wie­der­ver­wen­den.

Zunächst fügen wir eine neue Funk­ti­on hin­zu, die unse­re Aus­ga­be erstellt. Um die Anlei­tung kurz­zu­hal­ten, wer­den wir ein­fach alle Titel unse­rer Ein­trä­ge abfra­gen und unter­ein­an­der aus­ge­ben. Der Code hier­für sieht wie folgt aus:

public function wp_doShortocde( $atts ) {
	$myCustomPosts = get_posts( array(
			'post_type' => 'my_custom_post_type'
		)
	);

	$listOfTitles = array();
	foreach ( $myCustomPosts as $postItem /** @var WP_Post $postItem */ ) {
		$listOfTitles[] = $postItem->post_title;
	}

	return implode( '<br>', $listOfTitles );
}

Damit Word­Press unse­ren Code auf­ruft, müs­sen wir das gan­ze natür­lich mit­ein­an­der ver­knüp­fen. Dafür gibt es die Funk­ti­on “add_shortcode”.

add_shortcode( 'run_my_custom_post_type', array( $this, 'wp_doShortocde' ) );

In unse­rem Bei­spiel nen­ne ich unse­ren Short­code “run_my_custom_post_type” der dann die Funk­ti­on “wp_doShortcode” die wir davor ange­legt haben auf­ruft. Nun kön­nen wir den Short­code fol­gen­der­ma­ßen auf einer belie­bi­gen Sei­te oder einem Bei­trag hin­ter­le­gen:

[run_my_custom_post_type]

Ich habe dazu eine neue Sei­te ange­legt und über den Guten­­berg-Edi­­tor mei­nen Short­code ein­ge­tra­gen.

WordPress Gutenberg Editor Shortcode Custom.
Mein Cus­tom Short­code

Jetzt noch schnell ein paar Ein­trä­ge mit unse­rem Cus­tom Post-Type erstel­len.

Custom Post Type Einträge hinzugefügt.
Cus­tom Post-Type Backend

Sobald du fer­tig bist, kannst du dir das Gan­ze im Front­end anschau­en, in dem du die Sei­te mit dei­nem Short­code auf­rufst. Bei mir sieht das gan­ze jetzt so aus:

WordPress Shortcode Ausgabe

Nützliche Tipps #

Ein paar nütz­li­che Tipps um sicher­zu­stel­len das alles klappt.

  • Ver­wen­de für dei­ne Post-Types einen ein­zig­ar­ti­gen Prä­fix, um sicher­zu­stel­len, dass es spä­ter kei­ne Kom­pli­ka­tio­nen mit ande­ren Plug­ins gibt.
  • Ver­wen­de ein Prä­fix für Funk­tio­nen, die durch ein Word­Press Event auf­ge­ru­fen wer­den, damit du eine bes­se­re Über­sicht über dei­nen Code behältst.

Code ohne Shortcode #

<?php
if(!defined('ABSPATH')){
	exit();
}

class WordPressCustomPostType{
	public function __construct(){
		add_action('init', array($this, 'wp_registerPostType'));
	}

	public function wp_registerPostType(){
		$labels = array(
			'name' => __( 'Custom Post Type' )
		);

		$args = array(
			'labels'          => $labels,
			'capability_type' => 'page',
			'show_ui'         => true,
			'supports'        => array( 'title', 'editor', 'thumbnail', 'revisions', 'excerpt' )
		);

		register_post_type( 'my_custom_post_type', $args );
	}
}

new WordPressCustomPostType();

Code mit Shortcode #

<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit();
}

class WordPressCustomPostType {
	public function __construct() {
		add_action( 'init', array( $this, 'wp_registerPostType' ) );
		add_shortcode( 'run_my_custom_post_type', array( $this, 'wp_doShortocde' ) );
	}

public function wp_doShortocde( $atts ) {
	$myCustomPosts = get_posts( array(
			'post_type' => 'my_custom_post_type'
		)
	);

	$listOfTitles = array();
	foreach ( $myCustomPosts as $postItem /** @var WP_Post $postItem */ ) {
		$listOfTitles[] = $postItem->post_title;
	}

	return implode( '<br>', $listOfTitles );
}

	public function wp_registerPostType() {
		$labels = array(
			'name' => __( 'Custom Post Type' )
		);

		$args = array(
			'labels'          => $labels,
			'capability_type' => 'page',
			'show_ui'         => true,
			'supports'        => array( 'title', 'editor', 'thumbnail', 'revisions', 'excerpt' )
		);

		register_post_type( 'my_custom_post_type', $args );
	}
}

new WordPressCustomPostType();

Fazit #

Mit Word­Press las­sen sich schnell und bequem eige­ne Inhalts­ty­pen (Post-Types) anle­gen die du dann über Word­Press ver­wal­ten kannst. Auch die Aus­ga­be über einen Short­code ist schnell erle­digt.

Ich hof­fe, dir hat der klei­ne Bei­trag gehol­fen. Ich freue mich natür­lich jeder­zeit über Feed­back zu ein­zel­nen The­men oder Anre­gun­gen.

88e86fcb816eff22bc917094df2862d8dd5c0e978b333e6dd5f36f808990c261 96

Arti­kel von:

Marc Wag­ner

Hal­lo, Marc hier. Ich bin der Grün­der von Forge12 Inter­ac­ti­ve und bereits seit über 20 Jah­ren lei­den­schaft­lich dabei Web­sei­ten, Online­shops, Anwen­dun­gen und SaaS-Lösun­gen für Unter­neh­men zu ent­wi­ckeln. Vor der Grün­dung habe ich bereits in Bör­sen notier­ten Unter­neh­men gear­bei­tet und mir aller­lei Wis­sen ange­eig­net. Die­ses Wis­sen möch­te ich nun an mei­ne Kun­den wei­ter­ge­ben.

Hast du eine Fra­ge? Hin­ter­lass bit­te einen Kom­men­tar