自定义帖子类型,ACF的WordPress查询

时间:2018-01-29 17:38:19

标签: wordpress custom-post-type advanced-custom-fields

我正在尝试从自定义帖子类型和ACF查询,无法在首页上显示图像。以下是我的wp_query

    <?php
  $args = array(
    'post_type' => 'property',
    'post_status' => 'publish',
    'posts_per_page' => '4'
  );
  $property_loop = new WP_Query( $args );
  if ( $property_loop->have_posts() ) :
    while ( $property_loop->have_posts() ) : $property_loop->the_post();
      // Set variables
      $title = get_the_title();
      $description = get_the_content();

      $property_image2 = get_field('property_image2');
      // Output
      ?>
      <div class="property">
        <img src="<?php echo $property_image1;  ?>" alt="<?php echo $title; ?>">
        <h2><?php echo $title; ?></h2>
        <img src="<?php echo $property_image1;  ?>" alt="property-detail" class="property-detail align-right">
        <?php echo $description; ?>
        <p><a href="<?php echo $download; ?>" target="_blank" name="Spec Sheet">Download Spec Sheet</a></p>
      </div>
      <?php
      endwhile;
    wp_reset_postdata();
  endif;
?>

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

please working code please try custome field image display for fornt side
    <?php 
    $args = array(
        'post_type' => 'property',
        'post_status' => 'publish',
        'posts_per_page' => '4'
    );?>
    <?php $recent = new WP_Query($args); while($recent->have_posts()) : $recent->the_post();?>
        <div class="property">
            <?php $property_image2 = get_field('property_image2');?>
            <img src="<?php echo $property_image2['url'];?>" alt="<?php echo $property_image2['alt'];?>">

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

            <img src="<?php echo $property_image2['url'];?>" alt="<?php echo $property_image2['alt'];?>" class="property-detail align-right">

            <?php the_content(); ?>

            <p><a href="<?php the_field('your_download_field_name'); ?>" target="_blank" name="Spec Sheet">Download Spec Sheet</a></p>
        </div>
    <?php wp_reset_postdata(); endwhile;?>

答案 1 :(得分:0)

在设置$ property_image2时,您正在回显$ property_image1。

$ download的来源是什么?

检查wp_query vs get_posts:https://wordpress.stackexchange.com/a/191934/134453

的答案

在你的情况下,如果你没有分页(我认为你没有,因为你将posts_per_page设置为4),最好使用get_posts()。它也更快。

测试一下,我认为这会很有效:

<?php

  // Get posts args
  $args = array(
    'post_type' => 'property',
    'post_status' => 'publish',
    'posts_per_page' => '4'
  );

  // Get properties
  $properties = get_posts($args);

  if (!empty($properties)) :
    foreach($properties as $post) : setup_postdata($post) :

      $property_image2 = get_field('property_image2');
      ?>
      <div class="property">
        <img src="<?php echo $property_image2;  ?>" alt="<?php the_title(); ?>">
        <h2><?php the_title(); ?></h2>
        <img src="<?php echo $property_image2;  ?>" alt="property-detail" class="property-detail align-right">
        <?php  the_content(); ?>
        <p><a href="<?php echo $download; ?>" target="_blank" name="Spec Sheet">Download Spec Sheet</a></p>
      </div>
      <?php
      endwhile;
    wp_reset_postdata();
  endif;
?>

答案 2 :(得分:0)

看起来您正在尝试回显不存在的$property_image1。您需要定义它或使用确实存在的$property_image2

答案 3 :(得分:0)

我在这里看到了答案,其中一些是正确的但未经过优化。

更改1:使用WP_Query而不是必需的foreach和if语句。

更改2:图像拉入不正确的alt标签,将ACF字段页面中的图像设置为图像对象,并允许它将动态alt拉到该图像。

更改3:无需使用if语句检查是否有帖子,因为查询仅在有帖子时运行。

更改4:无需定义the_content和the_title,而是在循环内部调用它们。

更改5:我已添加下载链接的调用,这需要更新到您的字段名称以供下载。

<?php 
$args = array(
    'post_type' => 'property',
    'post_status' => 'publish',
    'posts_per_page' => '4'
);?>
<?php $recent = new WP_Query($args); while($recent->have_posts()) : $recent->the_post();?>
    <div class="property">
        <?php $property_image2 = get_field('property_image2');?>
        <img src="<?php echo $property_image2['url'];?>" alt="<?php echo $property_image2['alt'];?>">

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

        <img src="<?php echo $property_image2['url'];?>" alt="<?php echo $property_image2['alt'];?>" class="property-detail align-right">

        <?php the_content(); ?>

        <p><a href="<?php the_field('your_download_field_name'); ?>" target="_blank" name="Spec Sheet">Download Spec Sheet</a></p>
    </div>
<?php wp_reset_postdata(); endwhile;?>

虽然以下1个答案表明,在不使用分页时使用WP_Query是不合适的,但这种方法是正确的。但是,每页限制为4个事实表明存在分页,并且如果您想使用分页,还可以使用查询允许将来进行校对。