php WooCommerce中的 meta查询

6yt4nkrj  于 2022-11-21  发布在  PHP
关注(0)|答案(2)|浏览(146)

我试图在WooCommerce产品页面中使用 meta_query。
这是我正在使用的代码:

<?php
  $args = array(
      'post_type' => 'product',
      'posts_per_page' =>8,
      'meta_query' => array(
            array(
                'key' => 'autor',
                'value' => '"'.get_the_ID().'"',
                'compare' => 'LIKE',
            )
      ),
  );
  $products = new WP_Query($args);
  if ($products->have_posts()) :
      $i=0;
      while ($products->have_posts()) : $products->the_post();
          $autor = get_field('autor');
          if($i % 2 ==0) ?>

                    <h3><?php the_title();?></h3>

  <?php  if ($i % 2 != 0)
  $i++;
  endwhile;endif;?>

它不显示任何标题,如果我删除 meta_query,它会显示所有产品,所以问题是关系meta_query代码不工作。有什么想法如何在WooCommerce模板上使用它?

5m1hhzi4

5m1hhzi41#

使用get_the_ID()在 meta_query参数中获取作者ID。
get_the_ID()-将获取帖子ID,而不是作者ID。
要获取authoк id的所有帖子,你的参数应该如下所示:

$args = array(
        'author' => 1,
        'post_type' => 'product',
        'posts_per_page' => 8,
);

我还看到你使用get_field()-function。WordPress核心没有这个函数。你可以用get_the_author()代替。
最后,您的代码将如下所示:

<?php
$args = array(
        'author' => 1,
        'post_type' => 'product',
        'posts_per_page' => 8,
);
$products = new WP_Query($args);

if ($products->have_posts()) :
        $i=0;
        while ($products->have_posts()) : $products->the_post();
                $autor = get_the_author();
                if($i % 2 ==0) ?>
                                    <h3><?php the_title();?></h3>

<?php  if ($i % 2 != 0)
$i++;
endwhile;endif;?>
bz4sfanl

bz4sfanl2#

You can use this code snippet for meta_query in woocommerce

$args = array(
    'post_type'     => 'product',
    'post_status'   => 'publish',
    'posts_per_page'=> 10,
    'orderby'       => 'total_sales',
    'order'         => 'DESC',
    'meta_query'    => array(
        'relation'  => 'OR',
        array(
            'key'       => '_featured',
            'value'     => 'yes',
            'compare'   => '='
        ),
        array(
            'key'       => 'total_sales',
            'value'     => '10',
            'compare'   => '>='
        )
    )
);
$query = new WP_Query( $args );

相关问题