Skip to content

Total theme WPEX – WPexplorer metabox factory

A MacBook with lines of code on its screen on a busy desk

Die WPEX Meta Factory ist ein wunderbares Set an Funktionen, mit denen man ganz einfach seine selbsterstellten eigenen Custom Post Types mit zusätzlichen Metadaten ausstatten kann. Früher habe ich so etwas mit Toolset gelöst. Die Suite ist sehr möchtig, aber auch sehr groß. Ich bin froh, dass das Total Framework mittlerweile diese Funktion aufweist, da ich damit die Codebasis der Projekte deutlich reduzieren kann. Auch ist das Templating des Frameworks angenehmer zu bedienen als die Views von Toolset.

<?php 
/**
* Register custom fields.
*
* @link https://total.wpexplorer.com/docs/snippets/add-custom-metaboxes-to-total/
*/
function my_register_event_metaboxes() {
	if ( ! class_exists( 'WPEX_Meta_Factory' ) ) {
		return;
	}

	new WPEX_Meta_Factory(  array(
		'id'       => 'event_data',
		'title'    => esc_html__( 'Details des Events', 'text_domain' ),
		'screen'   => array( 'ausstellung', 'event' ), //post types to add the metabox to
		'context'  => 'normal',
		'priority' => 'default',
		// @important since Total Theme Core v1.7.1 you can now pass a function that returns the fields to prevent
		// the fields from being stored in memory and so they are only called when needed.
		'fields'   => array(

			array(
				'name' => esc_html__( 'Details zur Veröffentlichung', 'enym' ),
				'id'   => 'wpex_post_subheading',
				'desc'   => 'Erscheint im Bildoverlay unten',
				'type' => 'text',
			),

			array(
				'name' => esc_html__( 'Beginn der Veranstaltung', 'enym' ),
				'id'   => 'enym_date',
				'desc' => esc_html__( 'Dies ist der Beginn der Veranstaltung', 'enym' ),
				'type' => 'date',
			),
			array(
				'name' => esc_html__( 'Ende der Veranstaltung', 'enym' ),
				'id'   => 'enym_date_end',
				'desc' => esc_html__( 'Dies ist das Ende der Veranstaltung', 'enym' ),
				'type' => 'date',
			),
			array(
				'name' => esc_html__( 'Startzeit - Veranstaltungsende', 'text_domain' ),
				'id'   => 'enym_beginn_time',
				'desc' => esc_html__( 'Dies ist die Uhrzeit der Veranstaltung. Angabe des Endes ist optional.', 'text_domain' ),
				'type' => 'text',
			),
			array(
				'name' => esc_html__( 'Anmeldeseite', 'text_domain' ),
				'desc' => esc_html__( 'Ergänzt den Hinweis: "Für dieses Event wird eine Anmeldung empfohlen"', 'enym' ),
				'id'   => 'enym_application',
				'type' => 'url',
			),
			array(
				'name' => esc_html__( 'Einladung (Vorderseite)', 'text_domain' ),
				'id'   => 'enym_invitation_front',
				'type' => 'upload',
				'desc' => esc_html__( 'Einladungsflyer als JPG', 'enym' ),
				'return' => 'id', // return ID or URL
			),
			array(
				'name' => esc_html__( 'Einladung (Rückseite)', 'text_domain' ),
				'id'   => 'enym_invitation_back',
				'type' => 'upload',
				'desc' => esc_html__( 'Einladungsflyer als JPG', 'enym' ),
				'return' => 'id', // return ID or URL
			),
			array(
				'name' => esc_html__( 'Name des Künstler/ der Gruppe', 'enym' ),
				'id'   => 'enym_artist',
				'desc' => esc_html__( 'Name der beteiligten Künstler', 'enym' ),
				'desc_tip' => esc_html__( 'Custom tip if needed', 'enym' ),
				'type' => 'text',
			),
			array(
				'name' => esc_html__( 'Webseite des Künstlers', 'text_domain' ),
				'desc' => esc_html__( 'Optionaler Link auf die Internetseite des Kpnstlers', 'enym' ),
				'id'   => 'enym_url',
				'type' => 'url',
			),
			array(
				'name' => esc_html__( 'Einladung', 'text_domain' ),
				'id'   => 'enym_group',
				'type' => 'group', // combine multiple settings into 1 that returns an array of the values.
				'desc' => esc_html__( 'Bilder der Einladung können einzeln hochgeladen werden', 'enym' ),
				'fields' => array(
					// Add the fields normally here like above
					array(
						'name' => esc_html__( 'Bild der Einladung', 'text_domain' ),
						'id'   => 'enym_upload_invitation',
						'type' => 'upload',
						'return' => 'id', // return ID or URL
					),
				),
			),
			array(
				'name' => esc_html__( 'Einladung (Vorderseite)', 'text_domain' ),
				'id'   => 'enym_invitation_front',
				'type' => 'upload',
				'desc' => esc_html__( 'Einladungsflyer als JPG', 'enym' ),
				'return' => 'id', // return ID or URL
			),
			array(
				'name' => esc_html__( 'Einladung (Rückseite)', 'text_domain' ),
				'id'   => 'enym_invitation_back',
				'type' => 'upload',
				'desc' => esc_html__( 'Einladungsflyer als JPG', 'enym' ),
				'return' => 'id', // return ID or URL
			),

			array(
				'name' => esc_html__( 'Laudatio', 'text_domain' ),
				'id'   => 'enym_laudatio',
				'media_buttons' => 'true',
				'quicktags' => 'true',
				'rows' => '15',
				'type' => 'wp_editor',
			),
			array(
				'name' => esc_html__( 'Laudatio (PDF)', 'text_domain' ),
				'id'   => 'enym_laudatio_file',
				'type' => 'upload',
				'desc' => esc_html__( 'Eröffnungsrede als PDF-Dokument inklusive Bilder', 'enym' ),
				'return' => 'id', // return ID or URL
			),
			array(
				'name' => esc_html__( 'Pressemitteilung (PDF)', 'text_domain' ),
				'id'   => 'enym_presse_file',
				'type' => 'upload',
				'desc' => esc_html__( 'Pressemitteilung als PDF-Dokument inklusive Bilder', 'enym' ),
				'return' => 'id', // return ID or URL
			),
			array(
				'name' => esc_html__( 'Select example', 'text_domain' ),
				'id' => 'enym_select',
				'type' => 'select',
				'choices' => array(
					'' => esc_html__( 'Choice 1', 'text_domain' ),
					'option-2' => esc_html__( 'Choice 2', 'text_domain' ),
				),
				'desc' => esc_html__( 'Custom description if needed', 'text_domain' ),
			),
			array(
				'name' => esc_html__( 'Text Type', 'text_domain' ),
				'id' => 'enym_text',
				'desc' => esc_html__( 'Custom description if needed', 'text_domain' ),
				'type' => 'text',
			),
			array(
				'name' => esc_html__( 'Text Type', 'text_domain' ),
				'id' => 'enym_color',
				'type' => 'color',
			),
			array(
				'name' => esc_html__( 'Textarea Type', 'text_domain' ),
				'id' => 'enym_textarea',
				'type' => 'textarea',
			),
			array(
				'name' => esc_html__( 'Editor Type', 'text_domain' ),
				'id' => 'enym_editor',
				'type' => 'wp_editor',
			),
			array(
				'name' => esc_html__( 'Notice Type', 'text_domain' ),
				'id' => 'enym_notice',
				'type' => 'notice',
			),
			array(
				'name' => esc_html__( 'Icon Select', 'text_domain' ),
				'id' => 'YOUR_UNIQUE_CUSTOM_FIELD_NAME',
				'type' => 'icon_select',
				'choices' => array(
					'' => esc_html__( 'Empty Choice', 'text_domain' ),
					'fa fa-home' => esc_html__( 'Home', 'text_domain' ),
					'fa fa-bolt' => 'fa fa-bold', // note: you can add a name (see prev) or set the value equal to the key. 
					//You can also use the wpex_ticons_list() function to grab a list of theme icons - see plugins/total-theme-core/inc/meta/class-wpex-card-meta.php for an example.
				),
			),
			array(
				'name' => esc_html__( 'Multi/Repeater Type', 'text_domain' ),
				'id' => 'enym_multi_select_1',
				'type' => 'multi_select', // combine multiple settings into 1 that returns an array of the values.
				'choices' => array(
					'' => esc_html__( 'Choice 1', 'text_domain' ),
					'option-2' => esc_html__( 'Choice 2', 'text_domain' ),
				),
				'desc' => esc_html__( 'Custom description if needed', 'text_domain' ),
			),

		)
	) );
}
add_action( 'admin_init', 'my_register_event_metaboxes' );


Dieser Beitrag hat 0 Kommentare

Schreibe einen Kommentar

Deine E-Mail wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

An den Anfang scrollen