You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成FishPig后,如何在Magento2首页显示2篇WordPress最新博客?

解决FishPig与Magento2集成后首页仅显示单篇博客文章的问题

我看了你的代码,问题主要出在集合加载的语法错误和一处HTML标签的小问题上,下面帮你一步步修正:

问题分析

  1. 错误的load()方法调用:你在集合末尾用了load(2),但FishPig的Post\Collection类中,load()方法的参数并不是要加载的条目数量,而是用来加载特定ID的单条记录。这就导致你只加载了ID为2的那一篇文章,自然只能显示单篇。
  2. setPageSize设置不符需求:你设置了setPageSize(5)但实际想显示2篇,这里数值需要对应。
  3. 图片标签重复src属性:你的<img>标签里写了两个src,这是无效的HTML语法,应该把第二个改成alt属性。

修正后的代码

<?php 
// 注意:虽然ObjectManager可以工作,但Magento官方推荐使用依赖注入,这里先按你的写法修正
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$posts = $objectManager->create('FishPig\WordPress\Model\ResourceModel\Post\Collection')
    ->addPostTypeFilter('post')
    ->setOrderByPostDate() // 按发布日期倒序,默认就是最新在前
    ->addIsViewableFilter()
    ->setPageSize(2) // 设置每页显示2篇
    ->setPage(1, 2) // 确保取第一页的2条(可选,但更严谨)
    ->load(); // 无参调用load()加载整个集合
?>

<?php if (count($posts) > 0): ?>
<ul>
    <?php foreach($posts as $post): ?>
    <li>
        <a href="<?php echo $post->getUrl() ?>"><?php echo $this->escapeHtml($post->getPostTitle()) ?></a>
        
        <?php if ($image = $post->getFeaturedImage()): ?>
        <a href="<?php echo $post->getUrl() ?>">
            <img src="<?php echo $image->getAvailableImage() ?>" alt="<?php echo $this->escapeHtml($post->getPostTitle()) ?>" />
        </a>
        <?php endif; ?>
        
        <p><?php echo $post->getPostExcerpt(40) ?></p>
    </li>
    <?php endforeach; ?>
</ul>
<?php endif; ?>

额外建议

尽量避免直接使用ObjectManager,按照Magento2的最佳实践,你应该在对应的Block类中通过依赖注入获取FishPig\WordPress\Model\ResourceModel\Post\CollectionFactory,然后在Block里创建集合,再在phtml中调用Block的方法获取数据。这样代码更易维护,也符合Magento的架构规范。

内容的提问来源于stack exchange,提问作者arvind jha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:41:56