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

WordPress按ID调用指定文章仅显示第一篇,如何显示全部?

解决WordPress自定义Metabox文章ID列表仅显示第一篇的问题

问题根源

你代码里的get_post_meta第三个参数传了false,这会让它返回二维数组(格式类似[[2204,2218,2187]]),而WP_Query的post__in参数要求传入一维数组,所以只有第一个ID被正确识别,其他ID都被忽略了。

两种修复方案

方案1:修改get_post_meta的参数

把get_post_meta的第三个参数改为true,直接获取存储的数组值:

// 原代码
$instagram_post_ids = get_post_meta(get_the_ID(), 'instagram_post_id', false);

// 修改后
$instagram_post_ids = get_post_meta(get_the_ID(), 'instagram_post_id', true);

这个方案最直接,因为你的metabox存储的是数组,true参数会直接返回这个一维数组,刚好符合post__in的要求。

方案2:扁平化二维数组(如果必须保留false参数)

如果因为某些原因不能改第三个参数,就把返回的二维数组转成一维:

$instagram_post_ids = get_post_meta(get_the_ID(), 'instagram_post_id', false);
// 取第一个子数组(因为metabox只存了一组ID)
$instagram_post_ids = $instagram_post_ids ? reset($instagram_post_ids) : [];

修改后的完整代码

<div class="grve-row grve-bookmark">
    <?php
    // 获取自定义Metabox中的Instagram文章ID
    $instagram_post_ids = get_post_meta(get_the_ID(), 'instagram_post_id', true);

    // 检查是否有ID列表
    if (!empty($instagram_post_ids)) :
        $args = array(
            'post_type' => 'post', // 根据需要修改文章类型
            'post__in' => $instagram_post_ids,
            'orderby' => 'post__in',
            'posts_per_page' => -1, // 强制显示所有匹配的文章,避免默认分页限制
        );

        $custom_query = new WP_Query($args);

        if ($custom_query->have_posts()) :
            while ($custom_query->have_posts()) : $custom_query->the_post();
    ?>
                <div class="wpb_column grve-column grve-bookmark grve-column-1-3">
                    <?php if (has_post_thumbnail()) : ?>
                        <div class="featured-image">
                            <a href="<?php the_permalink(); ?>">
                                <?php the_post_thumbnail(300, true); // 按需调整图片尺寸 ?>
                            </a>
                        </div>
                    <?php endif; ?>
                    <h4 class="post-title">
                        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                    </h4>
                </div>
    <?php
            endwhile;
        else :
            echo '<p>没有找到对应的文章</p>';
        endif;

        // 重置文章数据
        wp_reset_postdata();
    else :
        echo '<p>未设置Instagram文章ID</p>';
    endif;
    ?>
</div>

额外添加了posts_per_page => -1,确保WP_Query返回所有匹配的文章(默认WordPress仅显示10篇),避免分页设置导致部分文章不显示。

内容的提问来源于stack exchange,提问作者akoual.house

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 20:18:23