首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显示来自wp-query的分类信息?

如何显示来自wp-query的分类信息?
EN

Stack Overflow用户
提问于 2020-05-20 20:52:16
回答 2查看 321关注 0票数 1

我有一个wp查询,它在我网站仪表板的一小部分上工作-它显示了6周内到期的重复工作(CPT)的列表-我在显示与帖子相关的分类时遇到了问题。

到目前为止,我得到了

代码语言:javascript
复制
<?php 

// get posts
$before_date = date("Ymd", strtotime("+6 weeks"));

$posts = get_posts(array(
    'post_type'         => 'pre_jobs',
    'posts_per_page'        => -1,
    'meta_key'          => 'pre_job_due_date',
    'orderby'           => 'meta_value',
    'order'             => 'ASC',
   'meta_query' => array(
        'relation'      => 'AND',
        array(
     'key' => 'pre_job_due_date',
     'value' => $before_date, 
     'compare' => '<', 
     ),
   ),
    'tax_query' => array(
        array(
            'taxonomy' => 'pre_job_status',
            'field' => 'slug',
            'terms' => array( 'repeat' )
        ),
    ),
));

if( $posts ): ?>

    <hr>
    <div class="dashpanel">
    <div class="duedate-head">Due Date</div>
    <div class="jobnumber-head">Job Type</div>
    <div class="client-head">Client/Requestor</div>
    <div class="customer-head">Customer</div>
</div>
<hr>


    <?php foreach( $posts as $post ): 

        setup_postdata( $post )

        ?>
        <?php $job_type = get_field('pre_job_job_type', $client->ID ); ?>
        <?php $customer = get_field('pre_job_customer', $client->ID ); ?>
        <?php $job_client = get_field('pre_job_requestor', $client->ID ); ?>

        <div class="dashpanel">
    <a href="<?php the_permalink(); ?>">
    <div class="duedate"><?php the_field('pre_job_due_date'); ?></div>
    <div class="jobnumber"><?php echo $job_type[0]->post_title; ?></div>
    <div class="client"><?php echo $job_client[0]->post_title; ?></div>
    <div class="customer"><?php echo $customer[0]->post_title; ?></div></a>
    </div>
    <hr>


    <?php endforeach; ?>



    <?php wp_reset_postdata(); ?>
<?php else : ?>
<p>No upcoming jobs to book in.</p>
<?php endif; ?>

我不确定我需要把

代码语言:javascript
复制
<?php 
$pre_job_type = get_field('pre_job_job_type');
if( $term ): ?>

代码--每次我添加这个代码,它就会崩溃。或者我在什么地方完全错了?

EN

回答 2

Stack Overflow用户

发布于 2020-05-28 03:44:31

您可以在打开if ($posts)循环后添加此代码:它将显示与此发布相关的分类法。并有链接到它。如果愿意,您可以删除该链接,并使用call $term->name仅显示术语的标题

代码语言:javascript
复制
<?php
$terms = get_the_terms( $post->ID, 'YOUR_TAXONOMY_HERE' );
if ( $terms != null ) {
    foreach ( $terms as $term ) {
        $term_link = get_term_link( $term, 'YOUR_TAXONOMY_HERE' );
        echo '<li><a href="'.esc_url( site_url() ) . '/your-taxonomy-here/' . $term->slug . '">' . $term->name . ' ' . $term->term_id . ' ' . $term->count . '</a></li>';
        unset( $term );
    }
}
?>
票数 0
EN

Stack Overflow用户

发布于 2020-05-29 10:37:36

你创建了你期望的分类法了吗?如果没有,那么首先在functions.php文件上创建分类法,或者在其中创建自定义帖子类型。

示例:

代码语言:javascript
复制
/**
 * Register a private 'Genre' taxonomy for post type 'book'.
 *
 * @see register_post_type() for registering post types.
 */
function wpdocs_register_taxonomy() {
    $args = array(
        'label'        => __( 'Job Type', 'textdomain' ),
        'public'       => true,
        'rewrite'      => true,
        'hierarchical' => true
    );

    register_taxonomy( 'pre_job_job_type', 'pre_jobs', $args );
}
add_action( 'init', 'wpdocs_register_taxonomy', 0 );

或OOP方法:

代码语言:javascript
复制
public function wpdocs_register_taxonomy() {
        $args = array(
            'label'        => __( 'Job Type', 'textdomain' ),
            'public'       => true,
            'rewrite'      => true,
            'hierarchical' => true
        );

        register_taxonomy( 'pre_job_job_type', 'pre_jobs', $args );
    }

/**
* When class is instantiated
*/

public function __construct() {

    add_action('init', array($this, 'wpdocs_register_taxonomy'));// Register texonomy

}

现在,您的分类已经,可以显示了。将此代码放在您想要显示分类的任何位置。

代码语言:javascript
复制
$pre_job_types = get_categories('taxonomy=pre_job_job_type&post_type=pre_jobs'); 
foreach ($pre_job_types as $job_type ) : ?>  
     <span> <?php echo $job_type->name; </span>
endforeach; 

如果您想使用分类法查询您的自定义帖子,请执行以下操作:

代码语言:javascript
复制
               $args = array(
                    'post_type' => 'pre_jobs',
                    'status' => 'published',
                    'tax_query' => array(
                      array(
                        'taxonomy' => 'pre_job_job_type',
                        'field' => 'name',
                        'terms' => array( 'repeat' )
                      ) 
                    ) 
                  );
                  $query = new WP_Query( $args );

然后像普通查询一样继续。该查询只显示分类为"repeat“的帖子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61913615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档