Robíme WordPress #5 - Post Types a Shortcodes

napísal , 25 Jul 2012 [ PHP Tutoriály Videá ]

Dnes budeme vytvárať vlastné typy príspevkov - custom post types.

WordPress od základu ponúka Posts (klasické články) a Pages (statickejší obsah, napríklad "O nás" stránky a tak podobne) ale čo ak naša stránka bude potrebovať niečo špecifickejšie? Čo ak chceme výpis krátkych noviniek alebo zoznam ponúkaných produktov?

Môžeme to nakydať do klasických článkov, alebo (a toto je lepší nápad) môžeme v rámci našej témy vytvoriť vlastné typy príspevkov a zamedziť tak bordelu.

Kto ma chce podporiť, môže po mne hodiť groš na yablko.sk. Dík!

Ďalej tu v článku nájdete zopár highlightov z videa a na jeho konci si, ako býva zvykom, môžete stiahnuť aktuálnu verziu témy.

 

Do functions.php pridáme:

/**
 * custom post type - FEATURED
 */
add_action('init', 'featured_custom_init');
function featured_custom_init() {

	register_post_type('featured', array(
		'label' => 'Featured',
		'public' => true,
		'exclude_from_search' => true,
		'has_archive' => true,
		'supports' => array( 'title', 'editor' ),
	));

}

Viac nastavení nájdeme v dokumentácii.

 

Pre výpis nášho nového featured post type môžeme použiť funkciu get_posts:

$featured_items = get_posts(array(
	'numberposts' => -1,
	'orderby'	  => 'post_date',
	'order'		  => 'DESC',
	'post_type'	  => 'featured',
));

foreach ( $featured_items as $post) : setup_postdata( $post ); ?>

	<article class="featured_item">
		<h3><?php the_title() ?></h3>
		<?php the_content() ?>
	</article>

<?php endforeach; ?>

Pomocou setup_postdata( $post ); získame možnosť používať the_title() a podobne. Tieto, okrem iného, prefiltrujú obsah vytiahnutý z databázy a vypľujú ho na stránku. Filtrovať však môžeme aj manuálne, pomocou apply_filters:

 

$title   = apply_filters( 'the_title', $post->post_title );
$content = apply_filters( 'the_content', $post->post_content );

V dokumentácii je znova kopa použiteľných filtrov.

 

WordPress tiež pozná tzv. shortcodes. Je to nejaký textový reťazec v hranatých zátvorkách, ktorý môžeme vložiť do textu článku a WordPress ho nahradí tým, čo potrebujeme. Napríklad my shortcode [gimme_featured] nahradíme obsahom článkov s nášho featured post type.

Najprv treba shortcode zaregistrovať, napríklad vo functions.php a napísať funkciu, ktorá na stránku namiesto shortkódu vypľuje nami žiadaný obsah:

/**
 * shortcode pre FEATURED
 */
add_shortcode('featured', 'featured_shortcode');
function featured_shortcode()
{
	$loop = new WP_Query( array( 'post_type' => 'featured', 'posts_per_page' => -1 ) );

	$text = '';
	while ( $loop->have_posts() )
	{
		$loop->the_post();

		$text .= '<article class="featured-item">';
		$text .= '	<h3>'. get_the_title() .'</h3>';
		$text .= 	get_the_content('');
		$text .= '</article>';
	}

	wp_reset_query();
	
	return $text;
}

V tomto prípade namiesto get_posts používame WP_Query.

 

Ak chceme shortcodes používať vo widgetoch, treba pridať nasledovný riadok:

/**
 * spojazdni shortcodes v text widgetoch
 */
add_filter( 'widget_text', 'do_shortcode' );

 

Viac ku všetkému samozrejme vo videu;)

Hudba je od Le Troubadour de Saint Alizee a stiahnite si ju a tešte sa na nový album.
To je rozkaz (nie je).


Stiahnite si tému: amazeballs_v029.zip

napísal , 25 Jul 2012

16 komentárov

komentuj ku každému komentáru sa v databáze ukladá iba meno, text a dátum, iba za účelom zobrazenia pod článkom
neukladá sa email, IP adresa ani informácie o prehliadači a údaje sa nepoužívajú na reklamu, newsletter, na žiadnu ekonomickú aktivitu, nikam sa neposielajú, sú v databáze len aby sa mohli zobraziť pod článkom

Archivovaný archív je bez komentárov. Radšej.