获取具有2个值之间的自定义帖子类型的帖子的术语

时间:2016-06-04 作者:Guy Ytzhak

我有国家的分类术语和目的地的帖子类型,它们有很多旅游日期
我想获取所有在自定义字段(带有高级自定义字段pro插件的自定义字段)上具有帖子宽度的术语,这些术语的值介于两个值之间。

示例:
2016年6月1日至2016年6月31日期间,我有8个亚洲中国(邮政)旅游日期(自定义字段)和2个欧洲英国(邮政)旅游日期(自定义字段)。

我想得到亚洲和欧洲这两个词。

编辑:

1) 我需要在旅游单页中显示所有旅游(it post)日期,并为国家创建分类法。

2) 我需要按日期和分类术语筛选帖子

3) 我需要创建两个下拉列表(选择)进行筛选。选择一个“选择”时,另一个“选择”将更改为“仅可用”。如果选择India,则日期选择change to all available dates from all post from taxonomy India。

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

这是此项的完成代码:

<?php 

    $dates_array = array();
    $countries_array = array();
    $term_list = array();
    $current_term_list = array();

    $args = array( \'post_type\' => \'tours\', \'posts_per_page\' => -1 );
    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post();

    global $post;

    $tour_terms = wp_get_post_terms( $post->ID, \'tours_cats\' );
    $current_term_list = array();
    foreach ($tour_terms as $tour) {

        if(!array_key_exists( $tour->term_id , $term_list )) {
            $term_list[$tour->term_id] = array();
        }
        $current_term_list[] = $tour->term_id;
    }
    $tour_dates = \'\';
    if( have_rows(\'tour_dates_repeater\') ):
    while ( have_rows(\'tour_dates_repeater\') ) : the_row();
        $mydate = get_sub_field(\'date_start\');
        $date = DateTime::createFromFormat(\'dmY\', $mydate);

        foreach($current_term_list as $term_dates) {
            $my_custom_date = $date->format(\'Ymd\');
            if(!in_array($my_custom_date, $term_list[$term_dates])) {
                $term_list[$term_dates][] = $date->format(\'Ymd\');
            }

        }
    endwhile;
    endif; //end repeater field

endwhile; wp_reset_query(); //end wp_query ?>

<?php 

echo \'<select name="dest">\';
    foreach($term_list as $key => $value) {
        $values = \'\';
        foreach($value as $date) {
            $values .= \'.date_\'. $date .\' \';
        }
        $term_name = get_term_by(\'id\', $key, \'tours_cats\')->name;
        echo \'<option value="\'. $key .\'" class="\'. $values .\'">\'. $term_name .\'</option>\';
    }
echo \'</select>\';


$termslist = array();
foreach($term_list as $key => $value) {
    $termslist = $termslist + $value;
}
$flip = array_flip($termslist);


foreach($flip as $key_var => $var) {
    $flip[$key_var] = array();
}

foreach($flip as $key_var => $var) {

    foreach($term_list as $key => $value) {

        if(in_array($key_var, $value)) {
            $flip[$key_var][] = $key;
        }
    }

}

echo \'<select name="dest">\';
    foreach($flip as $key => $date_select) {
        $values = \'\';
        foreach($date_select as $termid) {
            $values .= \'.termid_\'. $termid .\' \';
        }
        echo \'<option value="\'. $key .\'" class="\'. $values .\'">\'. $key .\'</option>\';
    }
echo \'</select>\';
?>

相关推荐