2016-04-22 4 views
0

Im пытается получить две последние сообщения из Wordpress, которые включают признакам. Необходимо получить заголовок сообщения, контент (ограниченный символ) и отображаемое изображение. У меня это до сих пор, все, что отсутствует, - это признак.Вернуться в Wordpress сообщение с изображениями, используя Fishpig в Magento

<div class="block block-blog block-recent-posts"> 
    <?php $resource = Mage::getSingleton('core/resource'); 
       $readConnection = $resource->getConnection('core_read'); 
       $query = "SELECT `id`, `post_title`,`post_name` ,`post_content`, `comment_count` FROM `wp_posts` WHERE `post_type`='post' ORDER BY `comment_count` DESC LIMIT 10"; 
       $results = $readConnection->fetchAll($query); 
    ?> 
     <ul> 

      <?php 
    $counter = 0; 
    foreach($results as $row) { ?> 

      <?php if($row['post_title']!='Auto Draft'): ?> 
      <li class="item"> 
      <a href="<?php echo $this->getUrl('news/').$row['post_name'];?>"> <?php echo $row['post_title'];?></a> 
       <p class="blog-content"> <?php $content = $row['post_content']; echo $string = substr($content,0,220); if(strlen($content)>220){echo "...";}  ?></a></p> 
      </li> 
      <?php endif; ?> 
<?php 

     if($counter == 2) 
     { 
       break; 
     } 
     $counter++; 
    } 

    ?> 


     </ul> 

ответ

0

Попробуйте это:

Я обновил свой запрос и добавил еще один запрос, чтобы получить пост URL изображения:

<div class="block block-blog block-recent-posts"> 
    <?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 WHERE pm.meta_key = '_thumbnail_id' AND p.post_type='post' ORDER BY p.post_date DESC LIMIT 10"; 
       $results = $readConnection->fetchAll($query); 
    ?> 
     <ul> 

      <?php 
    $counter = 0; 
    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='www.yoursite.com/wp-content/uploads/'.($results1[0]['meta_value']); 
       echo $url; //YOUR URL just set your site name 
//So final url YOUR--> SITENAME/wp-content/uploads/pathfromquery 

       ?> 
      <li class="item"> 
      <a href="<?php echo $this->getUrl('news/').$row['post_name'];?>"> <?php echo $row['post_title'];?></a> 
       <p class="blog-content"> <?php $content = $row['post_content']; echo $string = substr($content,0,220); if(strlen($content)>220){echo "...";}  ?></a></p> 
      </li> 
      <?php endif; ?> 
<?php 

     if($counter == 2) 
     { 
       break; 
     } 
     $counter++; 
    } 

    ?> 


     </ul> 
+0

Array ([0] => Array ([meta_id] => 24 [post_id] => 14 [meta_key] => _wp_attached_file [meta_value] => 2016/05/image.jpg)), а затем заголовок и содержание. То, что я получаю сейчас. – jord49

+0

ok 2016/05/image.jpg - изображение url ..i не эксперт, поэтому я просто печатаю_r :) .. – vrajesh

+0

ах не заметил. да, там есть URL-адрес, поэтому я могу работать с этим. Благодаря! – jord49

0

Вы не должны действительно использовать сырые SQL здесь , В работе вокруг, не могли бы вы сделать что-либо из следующих действий:.

1) Выбрать больше 2 сообщений (например, 5) и цикл через них и отображать 2, которые признакам изображения

2) Обеспечить у всех сообщений есть избранные изображения, а затем выберите первые 2 сообщения

3) Используйте коллекцию сообщений, а затем добавьте к ней свой собственный SQL.

Этот код получит 2 сообщения и добавит _thumbnail_id в коллекцию. Вы можете добавить код к этому, чтобы проверить это поле (используйте $ posts-> load (true) для отладки SQL-запроса и $ posts-> getSelect() -> where() для добавления настраиваемого фильтра)

<?php $posts = Mage::getResourceModel('wordpress/post_collection') ?> 
<?php $posts->addPostTypeFilter('post') ?> 
<?php $posts->addIsViewableFilter() ?> 
<?php // Limit the collection to 2 posts. Change this number or remove this line completely to include all posts 
<?php $posts->setPageSize(2) ?> 
<?php // Adds the _thumbnail_id meta field to the collection ?> 
<?php // This can be used for checking in the SQL whether a post has a featured image ?> 
<?php $posts->addMetaFieldToSelect('_thumbnail_id') ?> 
<?php $posts->load() ?> 
<?php if (count($posts) > 0): ?> 
    <ul> 
     <?php foreach($posts as $post): ?> 
      <li> 
       <h2><a href="<?php echo $post->getPermalink() ?>"><?php echo $post->getPostTitle() ?></a></h2> 
       <?php if ($image = $post->getFeaturedImage()): ?> 
        <a href="<?php echo $post->getPermalink() ?>" class="img"><img src="<?php echo $image->getAvailableImage() ?>" alt="" /></a> 
       <?php endif; ?> 
       <div class="post-content"><?php echo $post->getPostContent() ?></div> 
      </li> 
     <?php endforeach; ?> 
    </ul> 
<?php endif; ?> 
+0

Не могли бы вы вставить что-нибудь, что я могу попробовать, чтобы вернуть все сообщения? Я могу настроить цикл, чтобы возвратить X количество сообщений, но не уверен, что я делаю с этим. Спасибо – jord49

+0

Метод setPageSize ограничивает сбор до 2 сообщений. Чтобы вернуть все сообщения, просто удалите эту строку. Вы также можете удалить метод addMetaFieldToSelect, если вы не хотите проверять выбранные изображения. Затем вы можете вызвать $ post-> getFeaturedImage(), чтобы получить отображаемое изображение. Я немного обновил код в своем ответе. –

Смежные вопросы