当前位置: 首页 > 知识库问答 >
问题:

在自定义分类法模板中的WP_查询期间查询(2)ACF post对象

卫乐童
2023-03-14

为自定义分类法和相关自定义帖子类型构建Wordpress页面模板。在一个新的WP_查询中,我需要从(2)不同的ACF post对象字段中获取字段;列表人员和列表代表代码在wp_reset_postdata()之前按预期工作;返回正确数量的结果,每个帖子中的数据在重置点之前是唯一的。重置后,每个帖子中的所有数据都相同。代码如下,我确信有一个更优雅的解决方案:

<?php 
$args = array( 
'orderby' => 'title',
'order'   => 'ASC',
'post_type' => 'parade-of-homes',
'parade-category'   => 'parade-homes',
'posts_per_page'    => -1,
'meta_key'          => 'entry_number',
'orderby'           => 'meta_value',
'order'             => 'ASC'           
);
$listing = new WP_Query( $args );
if ( $listing->have_posts() ) :
    while ( $listing->have_posts() ) : $listing->the_post();
?>
<?php the_field('list_number'); ?>
<?php
$staff = get_field('list_staff');
$rep = get_field('list_rep');
if( $staff ): 
    // override $post
    global $post;
    $post = $staff;
    setup_postdata( $post ); 
    ?>
    <?php the_permalink(); ?><?php the_title(); ?>
    <?php 
    endif;
    if( $rep ): 
        // override $post
        $post = $rep;
        setup_postdata( $rep ); 
    ?>
    <?php the_field('mkt_co'); ?><?php the_field('mkt_tel'); ?>
    <?php
    endif;
    wp_reset_postdata();
    ?>
    <?php the_field('list_address') ?>
    <?php 
        endwhile; 
    endif;
wp_reset_query(); 
?>         

共有1个答案

曾英睿
2023-03-14

我想出来了。对于此应用程序,setup_postdata()是一个完全错误的方向。ACF页面上记录的“显示多个post对象的数据”是正确的。正如文章所述,“使用此方法,$post对象永远不会更改,因此所有函数都需要第二个有问题的post ID参数。”请在此处阅读更多信息;https://www.advancedcustomfields.com/resources/post-object/. 我的工作代码如下:

<?php 
    $args = array( 
    'orderby' => 'title',
    'order'   => 'ASC',
    'post_type' => 'parade-of-homes',
    'parade-category'   => 'parade-homes',
    'posts_per_page'    => -1,
    'meta_key'          => 'entry_number',
    'orderby'           => 'meta_value',
    'order'             => 'ASC'           
    );
    $listing = new WP_Query( $args );
    if ( $listing->have_posts() ) :
        while ( $listing->have_posts() ) : $listing->the_post();
?>
        <?php 
             the_field('list_number');
             $post_object = get_field('list_staff');
             if( $post_object ):
        ?>
             <a href="<?php echo get_permalink($post_object->ID); ?>">
             <?php echo get_the_title($post_object->ID); ?>
         <?php 
             endif; 
         ?>

         <?php 
             $post_object = get_field('list_rep');
             if( $post_object ):
         ?>
             <p><?php the_field('mkt_co', $post_object->ID); ?></span></p>
             <a href="tel:<?php the_field('mkt_tel', $post_object->ID); ?>"><?php the_field('mkt_tel', $post_object->ID); ?></a>
         <?php 
             endif; 
         ?>                    
         <?php the_field('list_address') ?>
     <?php 
         endwhile; 
    endif;
    wp_reset_query(); 
?> 
 类似资料:
  • 我有一个自定义的文章类型(媒体文章),它使用一些自定义字段,有一个自定义分类法(媒体文章类别)和该分类法中的14个术语。我可以使用CPT归档模板输出所有自定义帖子。 我在侧边栏中还有一个菜单,它列出了用于过滤自定义帖子的术语(我使用了一个自定义WP菜单小部件来创建列表)。 我用一个查询设置了一个自定义分类模板。根据args中放置的分类术语,我能够成功地组合或单独显示帖子。因此,如果我不需要使用过滤

  • 使用下面的代码,我列出了自定义帖子类型“人物”下的所有帖子 下面是我的页码, 我还创建了一个插件,使用上面的代码在边栏中显示标题列表。因此,每当我访问mysite.com/people这两个网站时(即带有分页的自定义帖子列表 若我转到第二页,侧边栏显示为空。 有人知道我哪里出错了吗?

  • 我正在应用程序中使用Hazelcast作为共享映射。我的地图是这样的: 第144行: 这里是我的类: 很酷,在重新编译Hazelcast之后,使用这个新的jar,我可以使用普通SQL访问查询。但对于pagingQueries,我有一些错误。

  • 我在Wordpress中有作为CPT的产品,并尝试使用复选框根据分类法筛选帖子。我有两种分类法,品牌和尺寸。它们在索引中是这样输出的。php文件: 在我的functions.php文件中,我有以下内容来构建WP_query并包括分类法: 这是scripts.js中的AJAX/jQuery: 我得到的是一个半工作结果,其中为所有可用品牌和尺寸创建了复选框,并且可以进行过滤。问题是,如果检查了XL码和

  • 我正在开发一个插件,它将放在我的woocommerce产品侧栏中。我需要的是,给定产品id/对象,它将找到2个具有我以前创建的相同自定义分类法的产品。 通过这段代码,我得到了产品中使用的术语列表,其中“colline”是自定义分类法: 问题是我不知道如何获取自定义分类id,以及如何根据自定义分类对其进行过滤。 我已经使用WP_Query查找同一类别的产品,代码如下: 如何更改代码以获得所需的分类i

  • 我已经创建了一个包含多个分类法的自定义查询,在此基础上,我使用进行分页。分类法是通过下拉选择表单来选择的,使用可以过滤帖子,这只是一个临时解决方案,但目前效果良好,值得注意。 分页工作正常,当选择分类术语时,帖子可以正确显示,但是当我离开第一页,比如说我进入第2页,在下拉选择器中选择不同的分类术语时,URL会保留当前页码,并向其中添加选择器ID。我想实现的是,当我在选择器中单击不同的分类法时,新选