我对多个页面使用相同的页面模板。-> page-base.php
在使用此模板的每个页面上,我想显示使用CPT
.
我的问题是,如何使数组动态化,以自动更改“分类法”?
这是我当前的代码
<?php
$terms = get_terms(
array(
\'taxonomy\' => \'catmaison\',
\'hide_empty\' => false,
));
if ( ! empty( $terms ) && is_array( $terms ) ) {
foreach ( $terms as $term ) {
$the_query = new WP_Query( array(
"posts_per_page" => 1,
"orderby" => \'date\',
"order" => \'DESC\',
"tax_query" => array(
array (
\'taxonomy\' => \'catmaison\',
\'field\' => \'term_id\',
\'terms\' => $term->term_id,
),
),
) );
?>
UPDATE
$taxonomy = get_field(\'taxonomy\');
$terms = get_terms(
array(
\'taxonomy\' => $taxonomy,
\'hide_empty\' => false,
));
if ( ! empty( $terms ) && is_array( $terms ) ) {
// Run a loop and print them all
foreach ( $terms as $term ) {
$the_query = new WP_Query( array(
"posts_per_page" => 1,
"orderby" => \'date\', // this is the default
"order" => \'DESC\', // this is the default
"tax_query" => array(
array (
\'taxonomy\' => $taxonomy, // use the $tax you define at the top of your script
\'field\' => \'term_id\',
\'terms\' => $term->term_id, // use the current term in your foreach loop
),
),
) ); ?>
<!--LOOP CONTENT -->
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12 pb-20 cpt-categories">
<div class="cat-images">
<!-- Image -->
<?php
$image = get_field(\'image_category\', $term);
if( !empty($image) ): ?>
<img src="<?php echo $image[\'url\']; ?>" class="img-fluid pb-20" alt="<?php echo $image[\'alt\']; ?>" />
<?php endif; ?>
<!-- Image -->
</div>
<?php $pageone = get_the_permalink($the_query->posts[0]); ?>
<h4><a href="<?php echo $pageone; ?>"><?= $term->name ?></a></h4>
<?php echo $cat; ?>
</div>
<!--LOOP CONTENT -->
<?php
} // End foreach
} // End if
//endif; ?>
所以我已经按照你的要求更新了代码。
我正在使用ACF Pro我的网站。但我不理解你的提议。
这是我想你告诉我的,对吗?
最合适的回答,由SO网友:Sally CJ 整理而成
您可以使用custom field.
例如,您可以命名它taxonomy
, 然后在模板中,使用get_post_meta()
要检索分类,请执行以下操作:
$post_id = get_the_ID(); // the ID of the current post
$taxonomy = get_post_meta( $post_id, \'taxonomy\', true );
并更改
\'taxonomy\' => \'catmaison\'
在您的代码中:
\'taxonomy\' => $taxonomy
示例:
$terms = get_terms(
array(
\'taxonomy\' => $taxonomy,
\'hide_empty\' => false,
),
);
更新我通常不会在我的答案中建议任何插件,但在你的情况下,你可能更容易使用这样的插件
ACF.
因此,请继续安装并激活它,然后按照documentation 创建自定义字段时。但作为一个例子,让我们使用我之前建议的相同名称:taxonomy
. 它应该是一个简单的Text 字段:
(更新:对于其他读者,文本字段如下所示。)
现在,在页面模板中,可以使用以下代码检索与特定页面关联的分类法(slug):
$taxonomy = get_field( \'taxonomy\' );
然后,正如我之前提到的,更改
\'taxonomy\' => \'catmaison\'
在您的代码中:
\'taxonomy\' => $taxonomy