合并相同标题下的术语,除非新 = 创建新标题 Wordpress 查询

Posted

技术标签:

【中文标题】合并相同标题下的术语,除非新 = 创建新标题 Wordpress 查询【英文标题】:Combine Terms under same Title, unless new = create new Title Wordpress Query 【发布时间】:2015-11-02 13:13:19 【问题描述】:

在'foreach'循环期间,如果检测到相同的术语,只添加页面链接,否则在单个wp_query期间添加术语名称和页面链接?

例如:

    标题 1 苹果派 标题 1 樱桃派 标题 2 火腿派 标题 3 山羊派 标题 1 面饼

应该变成:

    标题 1 苹果派, 樱桃派, 面饼 标题 2 火腿派 标题 3 山羊派
<?php 

$alternate_edition_a = array(
            'post_type'=> 'alternate_edition',
            'post_status' => 'publish',
            'posts_per_page'=>10,
            'no_found_rows' => true,
          'tax_query' => array(
        array(
        'taxonomy' => 'game_titles',
        'field' => 'slug', 
        'terms' => $gametitle_con,
        )
    )
);
$alternate_edition_query = new WP_Query( $alternate_edition_a );
if($alternate_edition_query->have_posts() ) : while ( $alternate_edition_query->have_posts() ) : $alternate_edition_query->the_post();

$alternate_editionTitlesID[] = get_the_ID(); 

$systemformats_altedition_terms = get_the_terms($post->id, 'system_formats');

foreach ($systemformats_altedition_terms as $systemformats_altedition_term) 

if (!has_term($systemformats_altedition_term->slug, 'system_formats', $gameFeatTitleID)) 

    $systemterm_slug[] = $systemformats_altedition_term->slug;




endwhile; else: endif; wp_reset_postdata(); /*Important to reset away from alternate post type*/ 

$array_notpresentclean = array_unique($systemterm_slug);

/*print_r ($array_notpresentclean);
*/

foreach ($array_notpresentclean as $array_notpresentclean2) 

$alternate_edition_a2 = array(
            'post_type'=> 'alternate_edition',
            'post_status' => 'publish',
            'posts_per_page'=>10,
            'no_found_rows' => true,
            'post__in' => $alternate_editionTitlesID,
          'tax_query' => array(
           array(
                'taxonomy' => 'system_formats',
                'field' => 'slug',
                'terms' => $array_notpresentclean2,
            ),
    ),
);
$alternate_edition_query2 = new WP_Query( $alternate_edition_a2 );
if($alternate_edition_query2->have_posts() ) : while ( $alternate_edition_query2->have_posts() ) : $alternate_edition_query2->the_post();

$currentterm_obj = get_term_by('slug', $array_notpresentclean2, 'system_formats');

if (!isset($var_notpresent)) 

$var_notpresent = 1; ?>

<a href="<?php echo esc_url( home_url( '/' ) ); ?>system_information/<?php echo $currentterm_obj->slug; ?>" title="<?php echo $currentterm_obj->description;?>"><?php echo $currentterm_obj->name;?></a>

<?php  ?>

<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php echo get_the_title(); ?>"><?php echo get_the_title(); ?></a></li>

<?php 

endwhile; else: endif; wp_reset_postdata(); /*Important to reset away from alternate post type*/ 

unset($var_notpresent);

 



?>

输出是:

    奶酪 蛋糕是谎言 蒸汽 蛋糕是谎言 香蕉电锯 战争机器:终极版 Windows 10 世嘉土星 害怕无聊 任天堂 香蕉电锯 战争机器:终极版 Xbox 一 香蕉电锯 WAR 的仓鼠 战争机器:终极版 Windows 10 战争机器:终极版

【问题讨论】:

那么这段代码的输出是什么,这根本不起作用吗? 对不起,它工作得很好。马上更新。 请不要编辑您的原始问题以提供答案。如果您找到了问题的解决方案,请将其发布为答案。否则,您的问题对未来的读者毫无用处。 【参考方案1】:

我希望这会有所帮助。

$titles = array('Title 1 Apple Pie','Title 1 Cherry Pie','Title 2 Ham Pie','Title 3 Goat Pie');
$list = '<ol>';
foreach ($titles as $value) 
$subtitle = substr($value, 0, 7);
if(!strpos($final,$subtitle ))
   $list .= '<li>' . $value . '</li>' ;
  else 
    $pos = stripos($list, $subtitle);
    $left_string = substr($list,0, $pos);
    $substring = substr($list, $pos);
    $next_pos = stripos($substring, '<');
    $right_string = substr($substring, $next_pos);
    $current = substr($substring, 8, $next_pos);
    $current = rtrim($current, '</li>');
    $list = '';
    $last = $current . ' '. substr($value, 8);
    $list = $left_string .' '. $subtitle.' '. $last . ' '.      $right_string;
      
  
    $final .= '</ol>';
     echo $final;

输出。

【讨论】:

遗憾的是,我看不到这个循环工作。我什至不能让它工作吗?我已经阅读了这些功能,但它们超出了我的想象,无论哪种方式,我都感谢您的帮助。我在我想要的上面添加了一个工作代码。现在只是致力于优化查询。谢谢 什么意思,不能循环工作?该代码正在使用 foreach 循环。 意味着在单个 WP_Query 中过滤/排序这些帖子,而无需像我为解决方案所做的那样调用更多 WP_Query。如果是这样,那么我很抱歉,因为尽管我阅读了这些功能,但我根本不明白如何实现。有关预期结果的工作代码,请参见上文。

以上是关于合并相同标题下的术语,除非新 = 创建新标题 Wordpress 查询的主要内容,如果未能解决你的问题,请参考以下文章

在恢复的合并中查找提交

如果键值相同,如何合并 laravel 集合?或添加新的数据行

合并排序相同的输出 C++

按日期和编号分组合并数据以创建新列

面试题:合并两个已排序的单链表而不创建新节点

熊猫合并列以使用逗号分隔值创建新列