im letzten theme hatte ich ja einige verschiedene inhaltsblöcke auf der startseite. das waren – wordpress will das so – natürlich verschiedende loops. als reminder für mich und für die allgemeinheit dokumentiere ich mal den code. Ich hatte eine eigene startseite.php als page-template angelegt und dieses als statische startseite in den allgemeinen einstellungen festgelegt. ich habe hier mal die formatierungen weggelassen, dass könnt ihr mit html oder css sicher besser als ich. für kommentare und verbesserungsvorschläge bin ich dankbar.
1. im ersten block werden nur 5 posts angezeigt, die als post-format = status sind. es wird nur das datum und der titel ausgegeben:
// die Abfrage: $the_new = get_posts(array( 'numberposts' => '5', 'tax_query' => array( array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array( 'post-format-status' ), 'operator' => 'IN' )))); // die Ausgabe: < ?php foreach($the_new as $post) : setup_postdata($post); ?> < ?php the_time('d.m.Y') ?>: < ?php the_title(); ?>
< ?php endforeach; ?>
2. im zweiten block werden 6 posts ausgegeben, die als post-format = image sind, es wird nur das vorschaubild (thumbnail) ausgegeben:
// die Abfrage: $the_images = get_posts(array( 'numberposts' => '6', 'tax_query' => array( array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array( 'post-format-image' ), 'operator' => 'IN' )))); // die Ausgabe: < ?php foreach($the_images as $post) : setup_postdata($post); ?> < ?php if ( has_post_thumbnail() ) { ?> < ?php the_post_thumbnail( array(300,150) ); } ?> < ?php endforeach; ?>
3. im dritten block folgt der neueste post, der nicht status und nicht image ist, angezeigt wird der komplette post:
// die Abfrage: $the_newest = get_posts(array( 'numberposts' => '1', 'tax_query' => array( array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array( 'post-format-status', 'post-format-image' ), 'operator' => 'NOT IN' )))); // die Ausgabe: < ?php foreach($the_newest as $post) : setup_postdata($post); ?>< ?php the_title(); ?>
< ?php the_content('Read on »'); ?> < ?php endforeach; ?>
4. im vierten block folgen 5 posts, von denen nur thumbnail und exzerpt angezeigt werden:
// die Abfrage: $the_newer = get_posts(array( 'numberposts' => '5', 'offset' => '1', 'tax_query' => array( array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array( 'post-format-status','post-format-image'), 'operator' => 'NOT IN' )))); // die Ausgabe: < ?php foreach($the_newer as $post) : setup_postdata($post); ?>< ?php the_title(); ?> < ?php if ( has_post_thumbnail() ) { ?> < ?php the_post_thumbnail('medium'); } ?> < ?php the_excerpt('Read on »'); ?> < ?php endforeach; ?>
5. im fünften block folgen die bücher, die bei mir ein eigener custom post type sind:
// die Abfrage: $the_books = get_posts(array( 'post_type' => 'books', 'posts_per_page' => 20 )); $the_new = get_posts(array( 'numberposts' => '5', 'tax_query' => array( array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array( 'post-format-status' ), 'operator' => 'IN' )))); // die Ausgabe: < ?php foreach($the_books as $post) : setup_postdata($post); ?> < ?php if ( has_post_thumbnail() ) { ?> < ?php the_post_thumbnail('thumbnail'); } ?> < ?php echo get_the_term_list( $post->ID, 'Autoren', '', ', ', ':' ); ?> < ?php the_title(); ?> < ?php endforeach; ?>
carsten ~ 10.05.2013 ~ #code #custom post types #loop #php #post format #wordpress ~ technik