这有点混乱,我无法理解为什么我的方法不起作用,或者我的错误是什么。
我用的是template part 将自定义wp\\U查询包含到我的主题中。我希望在整个主题中有两种不同的行为,因此我在模板部分中使用一个条件语句来输出两个不同的循环。
在我的头版。php我使用get\\u template\\u part()调用模板部分,使用$args选项:
<?php get_template_part(\'template-parts/modules/moduli-offerta/offerta-figli\',\'lista\', array(\'tipologia\' => \'lista\') ); ?>
在我的模板部分,我有以下代码:
<?php if ( $args[\'tipologia\'] == \'lista\' ) : ?>
...
<?php elseif ( $args[\'tipologia\'] == \'descrizione\' ) : ?>
...
<?php else : ?>
...
<?php endif; ?>
这段代码有效:如果我在条件语句中放入任何文本或HTML5,它会根据“什么”正确显示输出;tipologia“;我选择收养。
但是如果我在if语句中放入一个自定义循环(通过wp\\u查询),则输出为空。
这就像wp\\u查询中的if语句在初始if语句中打断了某些内容。
你能帮我理解吗?提示:如果我不将自定义循环放入条件语句中,它就会工作。
以下是完整代码:
<?php if ( $args[\'tipologia\'] == \'lista\' ) : ?>
<!-- First Loop Option -->
<?php $cm_offerta_post_figli = new WP_Query( array(
\'post_type\' => \'cm_offerta\',
\'post_parent\' => get_the_ID(),
\'order\' => \'ASC\',
)
); ?>
<?php if ( $cm_offerta_post_figli->have_posts() ) : ?>
<ul class="list-group list-group-flush ms-0">
<?php while ( $cm_offerta_post_figli->have_posts() ) : ?>
<?php $cm_offerta_post_figli->the_post(); ?>
<li class="list-group-item"><?php the_title(); ?></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<!-- END of First Loop Option -->
<?php elseif ( $args[\'tipologia\'] == \'descrizione\' ) : ?>
<!-- Second Loop Option -->
<?php if ( $cm_offerta_post_figli->have_posts() ) : ?>
<div class="bg-light row row-cols-1 row-cols-md-2 mb-5 p-5">
<?php while ( $cm_offerta_post_figli->have_posts() ) : ?>
<?php $cm_offerta_post_figli->the_post(); ?>
<div class="col">
<div class="card bg-transparent border-0">
<div class="card-body">
<h3 class="card-title"><?php the_title(); ?></h3>
<?php the_content(); ?>
</div>
</div>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
<!-- END of Second Loop Option -->
<?php else : ?>
Errore
<?php endif; ?>
<?php wp_reset_query(); ?>
SO网友:Deepak Kumar
您已经在第一个条件内指定了查询结果。所以分配给这个变量的值"cm_offerta_post_figli" 在第二个elseif条件内无法访问。
请将下面的代码放在第一个条件的顶部。它会起作用的。
<?php $cm_offerta_post_figli = new WP_Query( array(
\'post_type\' => \'cm_offerta\',
\'post_parent\' => get_the_ID(),
\'order\' => \'ASC\',
)
); ?>
我已按如下方式修改了您的代码,也许这会有所帮助:
<?php $cm_offerta_post_figli = new WP_Query( array(
\'post_type\' => \'cm_offerta\',
\'post_parent\' => get_the_ID(),
\'order\' => \'ASC\',
)
); ?>
<?php if ( $args[\'tipologia\'] == \'lista\' ) : ?>
<!-- First Loop Option -->
<?php if ( $cm_offerta_post_figli->have_posts() ) : ?>
<ul class="list-group list-group-flush ms-0">
<?php while ( $cm_offerta_post_figli->have_posts() ) : ?>
<?php $cm_offerta_post_figli->the_post(); ?>
<li class="list-group-item"><?php the_title(); ?></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<!-- END of First Loop Option -->
<?php elseif ( $args[\'tipologia\'] == \'descrizione\' ) : ?>
<!-- Second Loop Option -->
<?php if ( $cm_offerta_post_figli->have_posts() ) : ?>
<div class="bg-light row row-cols-1 row-cols-md-2 mb-5 p-5">
<?php while ( $cm_offerta_post_figli->have_posts() ) : ?>
<?php $cm_offerta_post_figli->the_post(); ?>
<div class="col">
<div class="card bg-transparent border-0">
<div class="card-body">
<h3 class="card-title"><?php the_title(); ?></h3>
<?php the_content(); ?>
</div>
</div>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
<!-- END of Second Loop Option -->
<?php else : ?>
Errore
<?php endif; ?>
<?php wp_reset_query(); ?>