排序自定义 post 类型取决于 ACF 日期字段
Sorting custom post types depends on ACF Date Field
我的任务是对所有自定义 post 类型('audio'、'video'、'webdev' 等)按分类 'portfolio' 或任何标签。我用下面的代码来做。
add_filter( 'pre_get_posts', 'custom_post_types_sort' );
function custom_post_types_sort( $query ) {
if ( is_tax('portfolio') || is_tag() ) {
$cptui_post_types = cptui_get_post_type_slugs();
// Sort portfolio taxonomy posts by project start date.
$query->set( 'post_type', $cptui_post_types );
$query->set( 'order', 'DESC' );
$query->set( 'orderby', 'meta_value_num' );
$query->set( 'meta_key', 'date' );
}
}
?>
除一件事外,一切正常。我的菜单未显示在分类模板上。我正在使用分类法-portfolio.php 模板来显示页面。
我假设这是由于查询修改而发生的。
<?php
/**
* Portfolio Taxonomy Template
*/
get_header();
?>
<section class="portfolio-template swiper">
<div class="swiper-wrapper postfolio-list">
<div class="swiper-slide">
<?php get_template_part( 'template-parts/breadcrumbs' ); ?>
<div class="portfolio-project-items">
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'template-parts/content', 'portfolio-item' ); ?>
<?php endwhile; ?>
<?php endif; ?>
</div>
</div>
</div>
</section>
<?php get_footer(); ?>
替换这个
if ( is_tax('portfolio') || is_tag() ) {
由此
if ( ( is_tax('portfolio') || is_tag() ) && $query->is_main_query() ) {
查看文档:https://developer.wordpress.org/reference/functions/is_main_query/
This function is most commonly used within hooks to distinguish
WordPress’ main query (for a page, post, or archive) from a
custom/secondary query.
这能解决您的问题吗?
我的任务是对所有自定义 post 类型('audio'、'video'、'webdev' 等)按分类 'portfolio' 或任何标签。我用下面的代码来做。
add_filter( 'pre_get_posts', 'custom_post_types_sort' );
function custom_post_types_sort( $query ) {
if ( is_tax('portfolio') || is_tag() ) {
$cptui_post_types = cptui_get_post_type_slugs();
// Sort portfolio taxonomy posts by project start date.
$query->set( 'post_type', $cptui_post_types );
$query->set( 'order', 'DESC' );
$query->set( 'orderby', 'meta_value_num' );
$query->set( 'meta_key', 'date' );
}
}
?>
除一件事外,一切正常。我的菜单未显示在分类模板上。我正在使用分类法-portfolio.php 模板来显示页面。
我假设这是由于查询修改而发生的。
<?php
/**
* Portfolio Taxonomy Template
*/
get_header();
?>
<section class="portfolio-template swiper">
<div class="swiper-wrapper postfolio-list">
<div class="swiper-slide">
<?php get_template_part( 'template-parts/breadcrumbs' ); ?>
<div class="portfolio-project-items">
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'template-parts/content', 'portfolio-item' ); ?>
<?php endwhile; ?>
<?php endif; ?>
</div>
</div>
</div>
</section>
<?php get_footer(); ?>
替换这个
if ( is_tax('portfolio') || is_tag() ) {
由此
if ( ( is_tax('portfolio') || is_tag() ) && $query->is_main_query() ) {
查看文档:https://developer.wordpress.org/reference/functions/is_main_query/
This function is most commonly used within hooks to distinguish WordPress’ main query (for a page, post, or archive) from a custom/secondary query.
这能解决您的问题吗?