如何在文本小部件中使用带有当前帖子元值的wp查询帖子

时间:2014-02-22 作者:jagger

我想在侧边栏文本小部件中查询信息。我添加了函数。php查询正在运行。(参见下面的代码)

我有一篇关于品酒的帖子。我想在右侧边栏中显示是哪个酒窖生产的。我添加了相同的自定义字段键cellar_slug 和价值somloi-apatsagi-cellar 每个帖子。下面的代码可以显示酒窖。

但我如何在所有帖子上使用?每个帖子都有不同的元价值。有没有使用当前post meta值而不是固定值的解决方案?

    <?php 

$cellars = new WP_Query(array(
     \'post_type\' => \'post\', 
     \'numberposts\' => -1, 
    \'posts_per_page\' => \'1\',
 \'meta_query\' => array(
          array(
           \'key\' => \'cellar_slug\',
           \'value\' => \'somloi-apatsagi-cellar\',
          )),
     \'orderby\' => \'menu_order\', 
     \'order\' => \'ASC\'
));


if ($cellars->have_posts()) : ?>

<u1>
     <?php 
     while ($cellars->have_posts()) : 
     $cellars->the_post(); ?>
          <li><h3><a href="<?php the_permalink(); ?>">
               <?php the_title(); ?></a></h3><?php the_post_thumbnail(\'widget-text-post-thumbnail\'); ?><?php the_excerpt(); ?>
        </li>  
     <?php endwhile; ?>
</u1>
<?php endif; ?>

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

你的问题有点难读,但如果我在一个帖子页面上理解你的话,这应该可以:

$obj = get_queried_object();

if (\'WP_Post\' === get_class($obj)) {
  $cellar = get_post_meta($obj->ID,\'cellar_slug\',true);
  if (!empty($cellar)) {
    $cellars = new WP_Query(
      array(
        \'post_type\' => \'post\', 
        \'numberposts\' => -1, 
        \'posts_per_page\' => \'1\',
        \'meta_query\' => array(
        array(
          \'key\' => \'cellar_slug\',
          \'value\' => $cellar,
        )
      ),
      \'orderby\' => \'menu_order\', 
      \'order\' => \'ASC\'
      )
    );
  }
}
您是:

使用get_queried_object() 要获取主要帖子数据,请使用get_post_meta() 检索与Post关联的cellar,并仅在您有cellar时运行查询

结束

相关推荐