自定义分类.php不起作用

时间:2019-02-13 作者:user5854648

我创建了一个名为“系列”的自定义分类法(下面的代码)和两页:分类法。php和分类法系列。php

1) 我注意到siteurl。com/series不起作用,我得到的是404页面,但如果我要尝试查找特定的series,比如说siteurl。com/series/test-series这确实可以找到页面。

2) 当我尝试siteurl时。com/series/test-series,它可以工作,它只需要拉动一根柱子,但在系列中,即使它应该显示所有柱子。我已经为我的分类法系列提供了代码。php,以帮助我们找到解决方案。

请让我知道我错过了哪些步骤,因为这是我第一次在路上犯错误,经过两周的故障排除,我不知所措。非常感谢您的帮助!

1) functions.php Register Custom Taxonomy (Series) Code

function create_series_hierarchical_taxonomy() {
   $labels = array(
    \'name\' => _x( \'Series\', \'taxonomy general name\' ),
    \'singular_name\' => _x( \'Series\', \'taxonomy singular name\' ),
    \'search_items\' =>  __( \'Search Series\' ),
    \'all_items\' => __( \'All Series\' ),
    \'parent_item\' => __( \'Parent Series\' ),
    \'parent_item_colon\' => __( \'Parent Series:\' ),
    \'edit_item\' => __( \'Edit Series\' ), 
    \'update_item\' => __( \'Update Series\' ),
    \'add_new_item\' => __( \'Add New Series\' ),
    \'new_item_name\' => __( \'New Series Name\' ),
    \'menu_name\' => __( \'Series\' ),
  );    

  $args = array(
    \'hierarchical\' => true,
    \'labels\' => $labels,
    \'taxonomies\' => array( \'series\' ),
    \'public\' => true,
    \'show_ui\' => true,
    \'show_admin_column\' => true,
    \'query_var\' => true,
    \'rewrite\' => array( \'slug\' => \'series\', \'with_front\' => true, \'hierarchical\' => true ),
    \'show_in_rest\' => true,
    \'can_export\'          => true,
    \'has_archive\'         => true,
    \'exclude_from_search\' => false,
    \'publicly_queryable\'  => true,
    \'capability_type\'     => \'post\',
  );

  register_taxonomy(\'series\', array(\'post\'), $args );

}

2) taxonomy-series.php

<?php get_header(); ?>
    <div class="container">
        <div class="row">  
          <h2><?php single_cat_title(); ?></h2>    

    <?php
        $args = array(
            \'numberposts\' => -1,
            \'post_type\' => \'post\',
            \'tax_query\' => array(
                array(
                    \'taxonomy\' => \'series\',
                    \'field\'    => \'slug\',
                ),
            ),
        );
        $query = new WP_Query( $args );
    ?>
            <div class="col-sm-6 card-block-img">
                <?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), \'single-post-thumbnail\' ); ?>
                <a href="<?php the_permalink(); ?>"><img src="<?php echo $image[0]; ?>"></a>
            </div>

            <div class="col-sm-6>
              <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
            </div>
        </div><!-- END ROW -->
    </div><!-- END CONTAINER -->
<?php get_footer(); ?>

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

我注意到siteurl。com/series不工作我得到404页

这是正确的行为。WordPress中此URL处没有可显示的内容。您需要提供一个特定的术语,以便WordPress可以使用该术语检索帖子。

请注意,在新安装的WordPress中siteurl.com/category/ 返回404,即使您有类别。

当我尝试siteurl时。com/series/test-series和它的工作原理它只是拉一个帖子,但在系列中,即使它应该显示所有帖子。

问题可能是您尚未构建taxonomy-series.php 正确地

第一个问题是,即使您使用WP_Query, 实际上,您并没有在结果上循环以输出每个结果。您的代码只写入一次输出。无论如何,你不应该使用WP_Query 无论如何

在以下位置查看系列时:siteurl.com/series/test-series, WordPress会自动为您查询正确的帖子。要显示它们,您不应该进行自己的查询。您应该使用The Loop.

所以taxonomy-series.php 应如下所示:

<?php get_header(); ?>
    <div class="container">
        <div class="row">  
            <h2><?php single_cat_title(); ?></h2>    

            <?php while ( have_posts() ) : the_post(); ?>
                <div class="col-sm-6 card-block-img">
                    <?php $image = wp_get_attachment_image_src( get_post_thumbnail_id(), \'single-post-thumbnail\' ); ?>
                    <a href="<?php the_permalink(); ?>"><img src="<?php echo $image[0]; ?>"></a>
                </div>

                <div class="col-sm-6">
                    <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                </div>
            <?php endwhile; ?>
        </div><!-- END ROW -->
    </div><!-- END CONTAINER -->
<?php get_footer(); ?>

相关推荐

Order by taxonomy Value

我确实想每年订购CTP。我有一个分类法叫做“annee”(年份),还有一个CTP叫做“moto”(摩托车)。问题是,当我试图按分类法排序时,它只按分类法ID排序,而不是按分类法值排序。你有什么解决办法吗?if ( is_post_type_archive( \'motos\' ) ) { $query->set( \'posts_per_archive_page\', 24 ); $query->set( \'order\', \'DESC\' );&