Hallo Fragenluch,
ich versuchs nochmals vertsändlich zu erklären.
Mein Theme auf meiner Seite ist für Videos ausgelegt. Das heisst wenn ich Videos poste, erscheint auf der Startseite eine Thumbvorschau und darunter die Titel und wer es gepostet hat.
Nun wollte ich aber auch, dass auf meiner Seite auch Bilder gepostet werden kann. Im Post sind dann immer ca. 20 - 30 Bilder enthalten. Wenn ich nun die Bilder poste erscheinen diese nicht auf der Startseite, sondern nur Titel und wer es gepostet hat, da nur Thumbs angezeigt werden.
Für die index.php gibt es noch eine zusätzliche preview-template.php für die Posts die diese thumbs dann aufruft. Die 2 php´s poste ich unter die functions.php
Mit diesem Eintrag in der functions.php wollte ich nun erreichen, dass mir das erste Bild aus dem Post angezeigt wird.
function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ //Defines a default image
$first_img = "/images/default.jpg";
}
return $first_img;
}
Alles anzeigen
index.php
<?php get_header(); ?>
<div class="container">
<div class="row">
<div class="col-md-12">
<?php if ( have_posts() ) : ?>
<?php $i=0; $postCount = 0; while (have_posts()) : the_post(); $i++; $postCount++; ?>
<?php if($i==1){echo'<div class="row">';} ?>
<?php get_template_part( 'preview', get_post_format() ); ?>
<?php if($i==6 || $postCount == sizeof($posts)){$i=0;echo'</div>';} ?>
<?php endwhile; ?>
<?php if ( function_exists( 'wp_paginate' ) ) : wp_paginate(); else : ?>
<ul class="pager">
<li class="previous">
<?php previous_posts_link() ?>
</li>
<li class="next">
<?php next_posts_link() ?>
</li>
</ul>
<?php endif; ?>
<?php else : ?>
<header class="entry-header">
<h1 class="entry-title">Nothing Found</h1>
</header>
<div class="entry-content">
<p>Apologies, but no results were found. Perhaps searching will help find a related post.</p>
<?php get_search_form(); ?>
</div><!-- .entry-content -->
<?php endif; // end have_posts() check ?>
</div><!-- .col-md-12 -->
</div><!-- .row -->
<?php get_sidebar(); ?>
</div><!-- .container -->
<?php get_footer(); ?>
Alles anzeigen
preview.php
<!-- start preview-->
<div class="col-md-2">
<?php if(get_post_meta( get_the_ID(),'duration',true)) { ?>
<div class="duration"><?php echo tubeace_duration(get_post_meta( get_the_ID(),'duration',true)); ?></div>
<?php } ?>
<div class="video-preview">
<a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php echo tubeace_thumb('latest',$post->post_title) ?></a>
</div>
<div class="video-preview-title">
<a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php echo tube_get_limited_string($post->post_title,42); ?></a>
</div>
<div class="video-meta-data">
<div class="pull-left">
<span class="author">By <?php the_author(); ?></span>
<?php if(function_exists('the_ratings')) { echo '<br />'.expand_ratings_template('<span class="rating">%RATINGS_IMAGES%</span>', get_the_ID()); }?>
</div>
<div class="pull-right">
<?php if(function_exists('bawpvc_views_sc')) { ?><span class="views"><?php echo do_shortcode('[post_views id="'.get_the_id().'""]'); ?></span><?php } ?>
</div>
</div>
<div class="clearfix"></div>
</div>
<!-- end preview-->
Alles anzeigen
Zum Aufrufen meiner Bilder function sollte ich nun folgendes ja in der preview.php unterbringen, damit das Bild mir auf der index.php angezeigt wird:
<a href="<?php the_permalink(); ?>" tilte="<?php the_title(); ?>">
<img src="<?php echo catch_that_image(); ?>" alt="<?php the_title(); ?>" width="165px" height="124px" />
</a>
Das habe ich eingefügt, aber das Resultat war, dass mit zwar das Bild angezeigt wurde und der Titel, aber dies hat sich auf die anderen Video Posts negativ ausgewirkt. Denn bei den Video Posts werden mir dann die Titel doppelt angezeigt.
Ich hoffe das war verständlich und nicht wieder verwirrend. :D