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

自定义帖子类型分类删除类别slug

关浩壤
2023-03-14

我已经创建了一个自定义的帖子类型“Shop”,其中包含商店类别的自定义分类法

对于我的商店类别存档页面,我希望URL结构为:

example.com/shop/tech/(代替example.com/shop/category/tech/)

我希望商店的帖子example.com/shop/shop-post-title-example

我尝试了下面的代码并保存了永久链接,但当我访问商店帖子时,它显示了404错误。

是否可以删除类别库而不出错?

// Custom Post Type : Shop  
function my_custom_post_shop() {
  $labels = array(
    'name'               => _x( 'Shop', 'post type general name' ),
    'singular_name'      => _x( 'Product', 'post type singular name' ),
    'add_new'            => _x( 'Add New', 'Product' ),
    'add_new_item'       => __( 'Add New' ),
    'edit_item'          => __( 'Edit' ),
    'new_item'           => __( 'New Product' ),
    'all_items'          => __( 'All Products' ),
    'view_item'          => __( 'View Product' ),
    'search_items'       => __( 'Search Products' ),
    'not_found'          => __( 'No projects found' ),
    'not_found_in_trash' => __( 'No projects found in the Trash' ), 
    'menu_name'          => 'Shop'
  );
  $args = array(
        'label'               => __( 'Shop' ),
        'labels'              => $labels,
        'supports'            => array( 'title', 'editor', 'excerpt', 'author', 'comments', 'revisions', 'custom-fields', 'thumbnail', ),
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'menu_position'       => 5,
        'can_export'          => true,
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'capability_type'     => 'post',
        'rewrite' => array( 'slug' => 'shop' ),
        'has_archive' => 'shop',
  );
  register_post_type( 'shop', $args ); 
}
add_action( 'init', 'my_custom_post_shop' );

// Shop Categories
function my_taxonomies_shop() {
  $labels = array(
    'name'              => _x( 'Shop Categories', 'taxonomy general name' ),
    'singular_name'     => _x( 'Shop Category', 'taxonomy singular name' ),
    'search_items'      => __( 'Search Categories' ),
    'all_items'         => __( 'All Categories' ),
    'parent_item'       => __( 'Parent Category' ),
    'parent_item_colon' => __( 'Parent Category:' ),
    'edit_item'         => __( 'Edit Category' ), 
    'update_item'       => __( 'Update Category' ),
    'add_new_item'      => __( 'Add New Category' ),
    'new_item_name'     => __( 'New Category' ),
    'menu_name'         => __( 'Shop Categories' ),
  );
  $args = array(
    'labels' => $labels,
    'hierarchical' => true,
    'show_admin_column' => true,
    'rewrite' => array( 'slug' => 'shop'),
  );
  register_taxonomy( 'shop_category', 'shop', $args );
}
add_action( 'init', 'my_taxonomies_shop', 0 );

共有2个答案

宰父冠玉
2023-03-14

您可以通过以下方式删除自定义分类URL中的类别库:

$args = array(

    'rewrite' => array( 'slug' => '/', 'with_front' => false),

    /* ...(other args)... */
);
register_taxonomy( 'shop_category', 'shop', $args );

并重新保存永久链接设置。

但是,如果将永久链接设置为post name,这将使您的(基本帖子类型)帖子变成404。似乎不能让自定义分类法和帖子都驻留在根目录中。因此,您可以转到永久链接设置并设置自定义结构,例如/blog/%postname%/

一个副作用是,您的CPT也会有这个“前面”,例如blog/你的自定义类型。你可以用'with_front'=摆脱这个

register_post_type( 'yourcustomtype',  array(
           'rewrite' => array(
                'slug' => 'yourcustomurl',
                'with_front' => false
            ),
            /* ... */
));

在这里找到的。

丌官博文
2023-03-14

据我所知,为了显示自定义帖子类型和/或其类别页面,您需要首先创建模板文件(相应的PHP文件)。模板文件将拖拽您的帖子并显示它们。

例如,要显示您的类别shop_category,您可以创建一个名为taxonomy-shop_category.php的文件。
如果您想专门为“技术”商店类别创建模板,那么您可以创建一个名为“taxonomy-shop_category_tech.php”的文件。
模板有层次结构:https://wphierarchy.com/关于模板的更多信息:https://developer.wordpress.org/themes/template-files-section/taxonomy-templates/
关于自定义帖子类型分类法的好文章:https://code.tutsplus.com/tutorials/taxonomy-archives-list-posts-by-post-type--cms-20340模板文件应该放在你的WordPress主题文件夹中(或子主题文件夹)
!重要的。不要忘记更新您的永久链接。转到 /wp-admin/options-permalink.php,然后单击“保存更改”。

下面是一个简单模板文件的示例:

<?php
if ( ! defined( 'ABSPATH' ) ) { exit; }
?>
 
<?php get_header(); 
$term = get_queried_object();

$args = array(
    'post_type' => 'shop',
    'shop-category' => $term->slug
);
$query = new WP_Query( $args );

?>
 <header class="archive-header">
    <h1 class="archive-title">
        <?php echo $term->name; ?>
    </h1>
</header>
        <div id="content">
                 <?php
                 if ($query->have_posts()) {
                         
                    echo'<h2>Your shop category name ' . $term->name . '</h2>';
                     
                    echo '<ul>';
                     
                        while ( $query->have_posts() ) : $query->the_post(); ?>
                 
                        <li id="post-<?php the_ID(); ?>">
                            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                        </li>
                         
                        <?php endwhile;
                         
                        echo '</ul>';
                         
                } 
                     
                wp_reset_postdata();
                ?>             
             
        </div><!-- #content -->

<?php
get_footer();
 类似资料:
  • 我有一个自定义的帖子类型和一个像这样创建的公文包分类法: 当我在查询中使用它时,它的工作原理应该是这样的。它显示在后端的菜单中,以及此自定义帖子类型的类别。 我的问题是,当我尝试从某个类别检索所有帖子时(通过单击类别名称),我发现

  • 我想知道是否可以删除自定义帖子类型的URL结构。例如,我有2个自定义帖子类型:投资组合和滑块。 我想保持像这样的投资组合帖子类型的URL结构:mysite.com/portfolio/item-1等。 但是我不希望滑动条帖子的URL结构,因为滑动条只会显示在主页上,我不希望访问者能够访问mysite.com/slider/slide-1。可能吗? 提前感谢:) Wordpress论坛帖子:http

  • 我有两个不同类别的自定义帖子类型(公文包),然后我有两个页面显示两个类别的帖子。 我调用页面时的url类似于mysite.com/pagename,其中pagename与公文包类别同名。 我的问题是,当我进入单一公文包时,url会变成mysite.com/portfolio/portfolio-name 有没有办法在url中显示投资组合类别?应该像mysite.com/portfolio-cate

  • 我创建了一个名为制造商的自定义帖子类型,并添加了大量帖子和类别。单个帖子页面工作,但类别/存档页面不显示任何帖子。 制造商被分成不同的类别,我需要显示每个类别中所有帖子的存档。我去工厂的时候 http://localhost/category/manufactures/ge-speedtronic/ 这就是令人困惑的地方。我为自定义帖子类型“制造商”使用的类别也显示在我的其他自定义帖子类型和默认帖

  • 我希望能够将我的WooCommerce产品发布到我的“帖子”类别中。基于下面的鳕鱼,这是可能的。这是我在functions.php.中使用的代码。当我用吴宇森制作新产品时,这些类别是可以点击的。然而,它并没有发布到类别本身。感谢对此事的任何见解。 将类别选择添加到自定义帖子类型

  • 我有一个干净的WordPress安装使用二十一,没有插件或其他修改。该博客包含大约800篇带有相关标签和类别的帖子。 我想将所有这些帖子移动到自定义帖子类型。通过将下面的代码添加到我的functions.php中,我的博客现在已经安装了自定义帖子类型,并且运行良好。 现在,我需要做的就是将常规帖子类型更改为我的自定义帖子类型。我已经设法使用插件转换帖子类型移动帖子,但我的分类没有转换。 我意识到我