2016-04-25 6 views
0

Ich versuche, meinen Code die letzten 3 Beiträge von WordPress in Magento mit der Fishpig-Erweiterung. Dies ist der Code, den ich bisher habe, aber es scheint, Beiträge mehr als einmal zu hinterlassen. Ich brauche es auch, um nur Posts zurückzugeben, da es im Moment auch Seiten zurückgibt.Fishpig get Titel, Beitrag Inhalt, Post Thumbnail und Permalink

<?php $resource = Mage::getSingleton('core/resource'); 
    $readConnection = $resource->getConnection('core_read'); 
    $query = "SELECT p.id,p.post_title,p.post_name ,p.post_content,p.comment_count,pm.meta_value FROM wp_postmeta AS pm INNER JOIN wp_posts AS p ON pm.post_id=p.ID ORDER BY p.post_date"; 
    $results = $readConnection->fetchAll($query); 


    ?> 
<?php 
    foreach($results as $row) { ?> 
<?php if($row['post_title']!='Auto Draft'): 
    //Get url from pm.meta_value 
    /********/ 
    $readConnection1 = $resource->getConnection('core_read'); 
    $query1 ="SELECT * FROM `wp_postmeta` WHERE `post_id` = '".$row['meta_value']."' AND meta_key='_wp_attached_file'"; 
    $results1 = $readConnection->fetchAll($query1); 
    $url='/news/wp-content/uploads/'.($results1[0]['meta_value']); 
    ?> 
<div class="blog-post-image"> 
    <img src="<?php echo $url; ?>"> 
</div> 
<div class="blog-post-content"> 
    <?php ?> 
    <h3> <a href="<?php echo $this->getUrl('news/').$row['post_name'];?>"> <?php echo $row['post_title'];?></a></h3> 
    <p class="blog-content"> <?php $content = $row['post_content']; echo $string = substr($content,0,220); if(strlen($content)>220){echo "...";}  ?></a></p> 
    <a href="" class="blog-posts-cta">More Info</a> 
</div> 
<?php endif; ?> 
<?php 
    if($counter == 4) 
    { 
     break; 
    } 
    $counter++; 
    } 

    ?> 

Antwort

0

Um 3 Beiträge anzuzeigen und den Post-Titel, URL, Bild und nach Inhalt (oder Auszug) angezeigt werden, müssen Sie den folgenden Code:

<?php $posts = Mage::getResourceModel('wordpress/post_collection') 
    ->addIsViewableFilter() 
    ->addPostTypeFilter('post') 
    ->setPageSize(3) 
    ->load() ?> 
<?php if (count($posts) > 0): ?> 
    <ul> 
     <?php foreach($posts as $post): ?> 
      <li> 
       <h2> 
        <a href="<?php echo $post->getPermalink() ?>"><?php echo $this->escapeHtml($post->getPostTitle()) ?></a> 
       </h2> 
       <?php if ($image = $post->getFeaturedImage()): ?> 
        <a href="<?php echo $post->getPermalink() ?>" class="fimg"><img src="<?php echo $image->getAvailableImage() ?>" alt="" /></a> 
       <?php endif; ?> 
       <?php echo $post->getPostContent() ?> 
       <?php 
       /** 
       * You could also use: 
       * echo $post->getPostExcerpt(20) 
       * This would display the first 20 words of the post content 
       * or the manually entered excerpt 
       **/ 
       ?> 
      </li> 
     <?php endforeach; ?> 
    </ul> 
<?php endif; ?> 

Diese writte von Hand schnell gewesen ist und wurde nicht getestet, sollte aber gut funktionieren.