我好像在这里碰了一堵砖墙。我们正在构建一个新的wordpress网站,永久链接结构是'/ labs /%postname%/'。这适用于所有帖子,使用/ labs /作为基础。我们的问题是我们需要为我们的产品组合定制一个帖子类型,我的基本网址应该是/工作,然后可能是/ work / digital,/ work / cgi等等。我也创建了自定义帖子类型和分类法,但无论我做什么,我所有自定义帖子的网址都以/ labs /开头。
我尝试了大量的建议,从重写规则到更改register_taxonomy函数中的重写参数。我正在使用的代码如下:
function create_post_type() {
register_post_type( 'our_work',
array(
'labels' => array(
'name' => __( 'Work Items' ),
'singular_name' => __( 'Work Item' )
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'work'),
'supports' => array(
'title',
'editor',
'excerpt',
'custom-fields',
'revisions',
'thumbnail',
'page-attributes'
),
)
);
}
add_action( 'init', 'create_post_type' );
function create_taxonomies() {
register_taxonomy('work-categories', array('our_work'), array(
'labels' => array(
'name' => 'Work Categories'
),
'show_ui' => true,
'show_tagcloud' => false,
'rewrite' => true,
'hierarchical' => true,
'with_front' => false
));
}
add_action('init', 'create_taxonomies');
尝试将rewrite参数更改为true,false,hierarchical,甚至将其替换为/或自定义帖子类型的名称。
甚至可以这样做吗?我们本来想要做的就是将博客和自定义帖子放在2个不同的基本路径下,我认为这样做很容易!
抱歉,如果之前已经涵盖了这个术语,那么术语就会混淆,搜索结果会带来任何对这个问题非常遥远的事情。
谢谢!
答案 0 :(得分:0)
在发布此处之后,我似乎总能找到自己的解决方案......对于有相同问题的人,请确保自定义帖子类型和分类法的注册中的slug是相同的...还要确保你使用发电机,因为很容易错过一些东西......所以现在我正在让两个基地工作都没有问题! :)
编辑:因此,您在常规设置中使用的任何基础都适用于您的所有普通帖子,但添加了功能并将所有内容绑定,所有自定义的帖子都将被重写。希望这有帮助!
<?php
/**
* Register Custom Post Type
*/
function create_post_type() {
register_post_type( 'our_work', array(
'label' => 'Work Items',
'singular_label' => 'Work Item',
'description' => 'Our work items',
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'has_archive' => true,
'hierarchical' => true,
'supports' => array( 'title', 'editor', 'excerpt', 'custom-fields', 'revisions', 'thumbnail', 'page-attributes' ),
'rewrite' => array( 'slug' => 'work-items/%work-categories%', 'with_front' => false),
)
);
}
add_action( 'init', 'create_post_type' );
/**
* Register Custom Taxonomy
*/
function create_taxonomies() {
$labels = array(
'name' => 'work-categories',
'singular_name' => 'work-category',
'menu_name' => 'Work Categories',
'all_items' => 'All Items',
'parent_item' => 'Parent Item',
'parent_item_colon' => 'Parent Item:',
'new_item_name' => 'New Item Name',
'add_new_item' => 'Add New Item',
'edit_item' => 'Edit Item',
'update_item' => 'Update Item',
'separate_items_with_commas' => 'Separate items with commas',
'search_items' => 'Search Items',
'add_or_remove_items' => 'Add or remove items',
'choose_from_most_used' => 'Choose from the most used items',
'not_found' => 'Not Found',
);
$rewrite = array(
'slug' => 'work-items',
'with_front' => false,
'hierarchical' => true,
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => false,
'show_tagcloud' => false,
'rewrite' => $rewrite,
'query_var' => 'work-categories',
);
register_taxonomy( 'work-categories', 'our_work', $args );
}
add_action('init', 'create_taxonomies');
/**
* Add custom filters to replace categories in custom taxonomy paths
*/
add_filter('post_link', 'brand_permalink', 1, 3);
add_filter('post_type_link', 'brand_permalink', 1, 3);
function brand_permalink($permalink, $post_id, $leavename) {
if (strpos($permalink, '%work-categories%') === FALSE) return $permalink;
// Get post
$post = get_post($post_id);
if (!$post) return $permalink;
// Get taxonomy terms
$terms = wp_get_object_terms($post->ID, 'work-categories');
if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0]))
$taxonomy_slug = $terms[0]->slug;
else $taxonomy_slug = 'uncategorised';
return str_replace('%work-categories%', $taxonomy_slug, $permalink);
}
?>