高级自定义域-关系POST Foreach查询

时间:2014-08-26 作者:tristanojbacon

我创建了一个名为Package(用于新闻包)的帖子类型,希望能够链接到特定的博客帖子,并在单个包中显示它们。php页面。我正在使用ACF关系字段,并使用post ID(也尝试使用post对象,但有相同的问题)

问题是我的foreach语句中的title和permalink调用不起作用。他们使用包的标题和永久链接,而不是帖子标题和永久链接,尽管在每次调用中都使用$item->ID。代码如下:

<?php while (have_posts()) : the_post(); ?>
<div class="entry-content"> 
    <h1 class="content-headline">Package: <?php the_title(); ?></h1>
</div>
<div class="package-description" style="padding:15px 10px;background:white;">
    <?php the_content(); ?>
</div>
    <?php 
        $items = get_field(\'package_items\');
        ?>
        <?php if( $items ): ?>
            <ul>
            <?php foreach( $items as $item ): ?>
            <?php setup_postdata($item); ?>
                <li>
                    <a href="<?php echo get_permalink( $item->ID ); ?>">
                        <?php echo get_the_title( $item->ID ); ?>
                    </a>
                </li>
            <?php endforeach; ?>
            </ul>
        <?php endif; ?>
         <?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?>
<?php endwhile; ?>
您可以看到上述代码的结果输出here.

有什么想法吗?

3 个回复
最合适的回答,由SO网友:Hassan Alvi 整理而成

使用旧方法添加关系字段->发布对象

<?php while (have_posts()) : the_post(); ?>
<div class="entry-content"> 
    <h1 class="content-headline">Package: <?php the_title(); ?></h1>
</div>
<div class="package-description" style="padding:15px 10px;background:white;">
    <?php the_content(); ?>
</div>
<?php 

$posts = get_field(\'package_items\');

if( $posts ): ?>

<ul>    

<?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) 

    setup_postdata($post); ?>

        <li>
            <a href="<?php echo get_permalink( $post->ID ); ?>">
                <?php echo get_the_title( $post->ID ); ?>
            </a>
        </li>

<?php endforeach; ?>

</ul>

<?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly

endif; endwhile; ?>

SO网友:J Ivy

在发布的代码中,变量$item 仍在使用,但现在尚未定义-在关系查询中,您也可以使用标准WP调用,如the_permalink()the_title() 无需回声。

SO网友:Robbiegod

我认为他的意思是最终的foreach循环应该如下所示:

<?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) 

    setup_postdata($post); ?>

        <li>
            <a href="<?php echo get_permalink( $post->ID ); ?>">
                <?php echo get_the_title( $post->ID ); ?>
            </a>
        </li>
<?php endforeach; ?>
正如常春藤所提到的,您只需要将$item->ID更新为$post->ID,因为您不再在foreach中使用$item。正如哈桑·阿尔维所指出的,你必须使用$post。

此外,感谢您发布代码,它也帮助我解决了我的问题。

结束
高级自定义域-关系POST Foreach查询 - 小码农CODE - 行之有效找到问题解决它

高级自定义域-关系POST Foreach查询

时间:2014-08-26 作者:tristanojbacon

我创建了一个名为Package(用于新闻包)的帖子类型,希望能够链接到特定的博客帖子,并在单个包中显示它们。php页面。我正在使用ACF关系字段,并使用post ID(也尝试使用post对象,但有相同的问题)

问题是我的foreach语句中的title和permalink调用不起作用。他们使用包的标题和永久链接,而不是帖子标题和永久链接,尽管在每次调用中都使用$item->ID。代码如下:

<?php while (have_posts()) : the_post(); ?>
<div class="entry-content"> 
    <h1 class="content-headline">Package: <?php the_title(); ?></h1>
</div>
<div class="package-description" style="padding:15px 10px;background:white;">
    <?php the_content(); ?>
</div>
    <?php 
        $items = get_field(\'package_items\');
        ?>
        <?php if( $items ): ?>
            <ul>
            <?php foreach( $items as $item ): ?>
            <?php setup_postdata($item); ?>
                <li>
                    <a href="<?php echo get_permalink( $item->ID ); ?>">
                        <?php echo get_the_title( $item->ID ); ?>
                    </a>
                </li>
            <?php endforeach; ?>
            </ul>
        <?php endif; ?>
         <?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?>
<?php endwhile; ?>
您可以看到上述代码的结果输出here.

有什么想法吗?

3 个回复
最合适的回答,由SO网友:Hassan Alvi 整理而成

使用旧方法添加关系字段->发布对象

<?php while (have_posts()) : the_post(); ?>
<div class="entry-content"> 
    <h1 class="content-headline">Package: <?php the_title(); ?></h1>
</div>
<div class="package-description" style="padding:15px 10px;background:white;">
    <?php the_content(); ?>
</div>
<?php 

$posts = get_field(\'package_items\');

if( $posts ): ?>

<ul>    

<?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) 

    setup_postdata($post); ?>

        <li>
            <a href="<?php echo get_permalink( $post->ID ); ?>">
                <?php echo get_the_title( $post->ID ); ?>
            </a>
        </li>

<?php endforeach; ?>

</ul>

<?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly

endif; endwhile; ?>

SO网友:J Ivy

在发布的代码中,变量$item 仍在使用,但现在尚未定义-在关系查询中,您也可以使用标准WP调用,如the_permalink()the_title() 无需回声。

SO网友:Robbiegod

我认为他的意思是最终的foreach循环应该如下所示:

<?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) 

    setup_postdata($post); ?>

        <li>
            <a href="<?php echo get_permalink( $post->ID ); ?>">
                <?php echo get_the_title( $post->ID ); ?>
            </a>
        </li>
<?php endforeach; ?>
正如常春藤所提到的,您只需要将$item->ID更新为$post->ID,因为您不再在foreach中使用$item。正如哈桑·阿尔维所指出的,你必须使用$post。

此外,感谢您发布代码,它也帮助我解决了我的问题。

相关推荐

无法在WordPress中通过PHP显示图像

我有一个奇怪的问题,当我尝试使用PHP输入图像标记的源代码时,它会在检查器中显示以下错误<img src=(unknown) alt=\"\"> 这个代码片段为我提供了正确的url,通过查看CPanel并粘贴和复制地址进行检查,但当我尝试通过php输入它时,不会显示图像$image = wp_get_attachment_image_src( $post_thumbnail_id); //echo($image[0]); ?> <img src=