我有一个wp查询,它在我网站仪表板的一小部分上工作-它显示了6周内到期的重复工作(CPT)的列表-我在显示与帖子相关的分类时遇到了问题。
到目前为止,我得到了
<?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; ?>我不确定我需要把
<?php
$pre_job_type = get_field('pre_job_job_type');
if( $term ): ?>代码--每次我添加这个代码,它就会崩溃。或者我在什么地方完全错了?
发布于 2020-05-28 03:44:31
您可以在打开if ($posts)循环后添加此代码:它将显示与此发布相关的分类法。并有链接到它。如果愿意,您可以删除该链接,并使用call $term->name仅显示术语的标题
<?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 );
}
}
?>发布于 2020-05-29 10:37:36
你创建了你期望的分类法了吗?如果没有,那么首先在functions.php文件上创建分类法,或者在其中创建自定义帖子类型。
示例:
/**
* 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方法:
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
}现在,您的分类已经,可以显示了。将此代码放在您想要显示分类的任何位置。
$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; 如果您想使用分类法查询您的自定义帖子,请执行以下操作:
$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“的帖子。
https://stackoverflow.com/questions/61913615
复制相似问题