Вернуть избранные изображения WordPress используя Fishpig в Magento

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

<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>

2 ответа

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

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

<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>

Вы не должны действительно использовать сырой 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; ?>
Другие вопросы по тегам