我将Divi主题用于Wordpress网站。目前,Project Custom Post中的所有内容都具有以下格式的相同url:
www.mywebsite.com/projects/project-name
我想做的是改变
projects
基于项目所属类别的更具动态性的名称。我知道我可以再创建一些自定义帖子,但我更喜欢这样。
我试图将永久链接设置更改为/%category%/
但是,我的项目无法与这两个版本中的任何一个一起工作。
我也尝试过这种方式,但它只是更改为一个新的静态名称,没有类别动态url:
<?php
function custom_post_name () {
return array(
\'feeds\' => true,
\'slug\' => \'anewname\',
\'with_front\' => false,
);
}
add_filter( \'et_project_posttype_rewrite_args\', \'custom_post_name\' );
?>
有什么建议可以做到这一点,或者我应该转向不同的自定义帖子?
Example:
我有两个项目(divi主题的自定义帖子类型),类别如下:
foods
和
drinks
. 目前,他们的url如下
www.mydomain。com/projects/foodexample1 www.mydomain。com/projects/drinkexample2我想把它们做成:
www.mydomain。com/foods/foodexample1 www.mydomain。com/饮料/饮料示例2
最合适的回答,由SO网友:Pmpr 整理而成
对于分类法(如类别或任何其他自定义分类法,使用register\\u taxonomy函数注册为自定义帖子类型),要成为wordpress中的单帖子永久链接的一部分,您可以在functions.php
当前主题:
function my_post_type_link( $post_link, $post ){
if( !empty( $post->post_type ) && in_array( $post->post_type, array( \'projects\' ) ) ){
$slug = $post->post_name;
$post_id = $post->ID;
$post_cats = get_the_terms( $post_id, \'category\' );
if( !empty( $post_cats[0] ) ){
$target_category = $post_cats[0];
while( !empty( $target_category->slug ) ){
$slug = $target_category->slug . \'/\' . $slug;
if( !empty( $target_category->parent ) ){
$target_category = get_term( $target_category->parent, \'category\' );
}else{
break;
}
}
$post_link = get_option( \'home\' ) . \'/\'. urldecode( $slug );
}
}
return $post_link;
}
add_filter( \'post_type_link\', \'my_post_type_link\', 10, 2 );
function my_pre_get_posts( $q ){
if( $q->is_main_query() && !is_admin() && $q->is_single ){
$q->set( \'post_type\', array_merge( array( \'post\' ), array( \'projects\' ) ) );
}
return $q;
}
add_action( \'pre_get_posts\', \'my_pre_get_posts\', 10 );
使用此选项,您可能会获得所需的输出
projects
posts的永久链接。