Make taxonomy query dynamic

时间:2019-03-11 作者:WDCreativ

我对多个页面使用相同的页面模板。-> 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我的网站。但我不理解你的提议。

这是我想你告诉我的,对吗?

enter image description here

1 个回复
最合适的回答,由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

相关推荐

Custom Taxonomy - fields

我有一个称为项目的自定义分类法,它有一个称为公寓的自定义post类型,两者都有acf自定义字段。我想将分类法创建的项目及其acf字段放在某个页面上,例如项目1、项目2。我创建了taxonomy-projects\\u公寓。php并将其用作模板,用于名为“项目”的页面。$args = array( \'taxonomy\' => \'projects\', \'orderby\' => $orderby, \'show_count