如何处理这些循环代码?

时间:2019-11-16 作者:Karan Kcoresys

我只需要知道把代码放在哪里:

$term_featured_image_id = get_term_meta( $custom_term->ID, \'wp_travel_trip_type_image_id\', true );
    $image_url = wp_get_attachment_url( $term_featured_image_id );
在此代码中:

<?php
$post_type = \'itineraries\';
$custom_tax = \'travel_locations\';
$custom_args = array(
\'parent\' => 0
);
$custom_terms = get_terms($custom_tax, $custom_args);
                    foreach($custom_terms as $custom_term) {
                        $term_link = get_term_link( $custom_term  );
                        wp_reset_query();
                        $args = array(\'post_type\' => \'itineraries\',
                                      \'tax_query\' => array(
                                          array(                                                  
                                              \'taxonomy\' => \'travel_locations\',
                                              \'field\' => \'slug\',
                                              \'terms\' => $custom_term->slug,                                                  

                                              ),
                                          ),
                                     ); ?>
                    <?php 
                        $loop = new WP_Query($args);
                        if($loop->have_posts()) { ?>
<?php
while($loop->have_posts()) : $loop->the_post(); ?>
//some content here
<?php
endwhile;?>
<?php } }?>

1 个回复
SO网友:Antti Koskinen

下面是一个如何在第二个代码中使用第一个代码的示例。在我的代码中,我还冒昧地提出了一种方法,通过将代码拆分为单独的函数,使代码更清晰、更易于阅读。

// add the following helper functions to functions.php
function travel_trip_type_image_url( int $term_id ) {
  $img_id = get_term_meta( $term_id, \'wp_travel_trip_type_image_id\', true );
  return ( $img_id && is_int($img_id) ) ? wp_get_attachment_url( $img_id ) : \'\';
}

function travel_location_terms() {
  $terms = get_terms( array(
    \'taxonomy\'   => \'travel_locations\',
    \'hide_empty\' => false,
    \'parent\'     => 0
  ) );
  return ( $terms && ! is_wp_error($terms) ) ? $terms : array();
}

function itineraries_query( string $term ) {
  $args = array(
    \'post_type\' => \'itineraries\',
    \'tax_query\' => array(
      array(                                                  
        \'taxonomy\' => \'travel_locations\',
        \'field\'    => \'slug\',
        \'terms\'    => $term,
      ),
    ),
  );
  return new WP_Query($args);
}

function itineraries_loop( WP_Query $query ) {
  if ( $query->have_posts() ) {
    while( $query->have_posts() ) {      
      $query->the_post();
      the_title(\'<h2>\',\'</h2>\');
      // use get_template_part( \'your-post-entry-template\' ); 
      // or write html markup here
    }    
    wp_reset_postdata();    
  }
}

function travel_type_header( WP_Term $term ) {
  if ( $term_img_url = travel_trip_type_image_url( $term->term_id ) ) {
    // modify html output as needed
    printf(
      \'<a href="%s"><img src="%s" alt="%s"></a>\',
      esc_url( get_term_link( $term ) ),
      esc_url( $term_img_url ),
      esc_attr( $term->name )
    );
  }
}

// use in some template file
foreach ( travel_location_terms() as $travel_location ) {
  travel_type_header( $travel_location );
  itineraries_loop( itineraries_query( $travel_location->slug ) );  
}
但是如果您不想使用建议的拆分,那么只需将第一个代码放在foreach$term_link 线

要使用此代码,您需要

检查并在需要时更新中使用的元密钥travel_trip_type_image_url(),taxonomy 和post type 代码中使用的名称更新内部的循环条目html输出itineraries_loop() 根据您的喜好,更新其中的术语标题html输出travel_type_header() 根据您的喜好,您可以在自定义分类法和帖子类型中使用术语和帖子

相关推荐

Modals using loops and ACF

我试图制作一个页面,查询特定类别(“景点”)的每一篇帖子。我已经能够成功地获得帖子,我只需要让modals工作。我在我的循环中做了一个按钮,它的标题是循环所在的任何帖子。我希望这样,每当人们单击该按钮时,它就会打开一个模式,显示代码中ACF I列表中的所有字段。不过,我有一些问题。由于某种原因,我无法让javascript正常工作。现在都在页面模板文件中,但我已经尝试通过函数将脚本排队。php等。我的猜测是,我正在尝试制作文档。getElementsByClassName而不是documents。getE