我已经创建了一个自定义的帖子类型“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 );
您可以通过以下方式删除自定义分类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
),
/* ... */
));
在这里找到的。
据我所知,为了显示自定义帖子类型和/或其类别页面,您需要首先创建模板文件(相应的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中,我的博客现在已经安装了自定义帖子类型,并且运行良好。 现在,我需要做的就是将常规帖子类型更改为我的自定义帖子类型。我已经设法使用插件转换帖子类型移动帖子,但我的分类没有转换。 我意识到我