我正在尝试创建一个循环,在每个分类法的第一篇文章中显示我的所有分类法。这是分类法"customers"
我想显示客户的每个第一个投资组合CPT。
我有polylang 安装了英语和德语,所有功能都正常工作,而不是此循环。
这个循环是可行的,但这个项目总是让我得到英文帖子。不管是哪种语言。
这是一个粘贴箱,只是为了明确客户税是"kunden"
自定义帖子类型为"portfolio"
. 这个"kunden"
-税务不是翻译的,两种语言使用相同的语言。这个"portfolio"
-cpt已翻译。
<?php get_header() ?>
<div class="row" id="main">
<div class="large-12 columns">
<ul class="small-block-grid-3 large-block-grid-6">
<?php
$lang = pll_current_language();
$terms = get_terms( \'kunden\' );
foreach( $terms as $term ) :
$args = array(
\'post_type\' => \'portfolio\',
\'kunden\' => $term->slug,
\'posts_per_page\' => 1,
\'lang\' => $lang,
);
$single = new WP_Query( $args ); ?>
<?php if ($single->have_posts()) { ?>
<?php while ($single->have_posts()) : $single->the_post(); ?>
<?php get_template_part(\'project-thumb\'); ?>
<?php endwhile; ?>
<?php } ?>
<?php endforeach; ?>
</ul>
</div>
</div>
<?php get_footer() ?>
如果我改变
post_per_page => 2
德国邮政是继英国邮政之后的第二家邮政公司。所以这两种语言都会一个接一个地显示出来。
SO网友:Björn Damm
我终于想出了一个解决办法。我想这不是完美的,因为所有的帖子都是循环的,错误的语言不会显示出来,但现在它起作用了。我仍然对想法持开放态度。
我现在的想法是获取帖子的语言,如果它与页面语言不匹配,就不要显示它。
这是新的部分。
global $polylang;
$postlang = $polylang->get_post_language(get_the_ID())->slug;
if ($postlang == $lang) {
get_template_part(\'project-thumb\');
}
完整的代码现在看起来像这样,并且对我有效。
<?php get_header() ?>
<div class="row" id="main">
<div class="large-12 columns">
<ul class="small-block-grid-3 large-block-grid-6">
<?php
global $polylang;
$lang = pll_current_language();
$terms = get_terms( \'kunden\' );
foreach( $terms as $term ) :
$args = array(
\'post_type\' => \'portfolio\',
\'kunden\' => $term->slug,
\'posts_per_page\' => 2,
\'lang\' => $lang,
);
$single = new WP_Query( $args ); ?>
<?php if ($single->have_posts()) { ?>
<?php while ($single->have_posts()) : $single->the_post(); ?>
<?php $postlang = $polylang->get_post_language(get_the_ID())->slug; ?>
<?php if ($postlang == $lang) {
get_template_part(\'project-thumb\');
} ?>
<?php endwhile; ?>
<?php } ?>
<?php endforeach; ?>
</ul>
</div>
</div>
<?php get_footer() ?>