当前位置: 首页 > 知识库问答 >
问题:

WordPress自定义分类查询

王凯旋
2023-03-14

我有一个自定义的文章类型(媒体文章),它使用一些自定义字段,有一个自定义分类法(媒体文章类别)和该分类法中的14个术语。我可以使用CPT归档模板输出所有自定义帖子。

我在侧边栏中还有一个菜单,它列出了用于过滤自定义帖子的术语(我使用了一个自定义WP菜单小部件来创建列表)。

我用一个查询设置了一个自定义分类模板。根据args中放置的分类术语,我能够成功地组合或单独显示帖子。因此,如果我不需要使用过滤菜单的话,它会按预期工作。但是当我尝试使用分类术语菜单时,每个菜单项都显示相同的内容。

我需要做的是让菜单中的每个分类学术语只显示该术语的CPT。是的,我可以为每个学期制作一个模板(全部14个!),但是这有什么乐趣呢?此外,客户可能会动态添加更多条款,因此需要适应新生成的条款。

本质上,我希望所有分类法术语都有一个查询/模板,它将动态显示单击哪个分类法术语的帖子。

有人能帮我把这推到下一个层次吗?

以下是当前的显示:

当前显示的屏幕截图,带有自定义分类的侧栏

这是我目前的查询:

$date = get_field('pub_date', false, false);
$date = new DateTime($date);

$args = array(
'post_type' => 'media_articles',
'post_status' => 'publish',
  'posts_per_page' => '10',
'meta_key'          => 'media_publication_date',
'orderby'           => 'meta_value',
'order'             => 'DESC',
'tax_query' => array(
    'relation' => 'OR',
    array(
        'taxonomy' => 'media-article-category',
        'field'    => 'slug',
        'terms'    => array( 'focus-on-the-lands' ),  //
    ),
    array(
        'taxonomy' => 'media-article-category',
        'field'    => 'slug',
        'terms'    => array( 'the-local-story' ),  //
    ),
),

);

$query = new WP_Query( $args );
if ( $query->have_posts() ) :
    while ( $query->have_posts() ) : $query->the_post();

    ?>

            <div class="media-item">
                <h2><a href="<?php the_field('media_url'); ?>" target="_blank"><?php the_title(); ?><i class="fa fa-external-link" aria-hidden="true"></i></a></h2>
                <?php 
                echo '<p class="lol-media-date">Publication Date: ' . DateTime::createFromFormat('Ymd', get_field('media_publication_date'))->format('F j, Y') . '</p>';
                echo '<p>' . get_the_term_list( $post->ID, 'media-article-topics', 'Tags: ', ', ' ) . '</p>';
                echo '<p class="lol-media-description">' . get_field('media_description') . '<span class="lol-media-publication">' . get_field('media_publication') . '</span></p>';
                ?>

            </div><!-- end .media-item -->


        <?php

    endwhile;
    endif;

我正在使用Genesis框架。

共有1个答案

宿建本
2023-03-14

当您单击分类菜单项时,默认情况下wordpress会过滤帖子。我认为你不应该在这里使用你自己的查询,但是你可以修改默认查询。

使用操作钩子pre_get_posts来更改主查询。

function my_media_article_category_query( $query ) {
    if ( is_tax( 'media-article-category' ) ) {
        $query->set( 'meta_key', 'media_publication_date' );
        $query->set( 'orderby', 'meta_value' );
        $query->set( 'order', 'DESC' );
    }
}
add_filter( 'pre_get_posts', 'my_media_article_category_query' );
 类似资料:
  • 我已经创建了一个包含多个分类法的自定义查询,在此基础上,我使用进行分页。分类法是通过下拉选择表单来选择的,使用可以过滤帖子,这只是一个临时解决方案,但目前效果良好,值得注意。 分页工作正常,当选择分类术语时,帖子可以正确显示,但是当我离开第一页,比如说我进入第2页,在下拉选择器中选择不同的分类术语时,URL会保留当前页码,并向其中添加选择器ID。我想实现的是,当我在选择器中单击不同的分类法时,新选

  • 我正在尝试创建一个查询,其中我在自定义帖子类型中创建了多个类别(分类法),然后在主页上根据具体的内容进行查询,这样做很好。目前我有3种分类法: 当前特价 meineke-差异 特色 我已经编写了拉动这些的代码。我遇到的问题是,在主页上,当这些帖子也附加到“特色”分类法时,它只需要拉这些帖子。因此,这方面的标准逻辑示例如下: 如果分类法=当前特价商品和特色商品,则成功或失败 但是它所做的是把它们都拉

  • 我已经搜索了又搜索,除了我称之为“hack方法”的方法之外,找不到其他方法将自定义分类添加到自定义管理菜单中。 然后我注册我的帖子类型并确保它们使用 这可以工作,自定义帖子类型显示在我的自定义菜单中。 但是自定义分类法不接受同一属性的字符串,只接受true或false。 因此,要添加它,您必须创建一个子菜单页 这是一种“黑客”方式。 还有别的办法吗?如果不修改WordPress核心,我可以覆盖re

  • 我有一个自定义的帖子类型设置,有许多类别和子类别。 我试图做的是创建一个页面,显示特定类别中的所有帖子,并使用一个菜单列出所有类别子类别,以便可以过滤帖子。 我已尝试复制存档模板并将其重命名为分类法-(我的自定义分类法)。php,如果我转到slug,它会显示某些帖子,并使用

  • 我的股票与分页我尝试了很多解决方案,但没有工作!我使用WordPress5.4。我的网站是一个单页网站,当然我想在索引中使用它。php 这是我的密码: 很抱歉,如果这是一个高度重复的问题——我发现的其他修复方法都不适用于我。请有人告诉我问题在哪里? 谢谢! 编辑1我尝试了这个,它也不工作!

  • 我有一个与自定义分类法(支持)相关的自定义帖子类型(问题) 在我的主题/分类中。php我有以下代码: 这意味着我针对“支持”分类法的特定模板文件。 在分类法模板文件中,我进行了自定义查询: 我有大约11篇文章,第1页显示了前5篇文章,但问题是没有显示分页。 有什么想法吗?非常感谢。