我正在尝试创建一个定制的permalink结构,它将允许我完成以下任务。
我希望我的永久链接结构如下所示:
项目/类别/项目-名称
或
/%自定义后类型%/%自定义分类%/%后名称%/
创建这样的永久链接结构会如何影响URL或其他页面?是否可以取消定义自定义永久链接结构并将其限制为单个CPT?
谢谢
由于WordPress在最近几年发生了很大的变化,因此有了一个新的解决方案。
// Used for registering cpt_project custom post type
$post_type_args = array(
'rewrite' => array(
'slug' => '/%custom-post-type%/%custom-taxonomy%/%postname%/',
'with_front' => true
'walk_dirs' => false
)
);
%自定义帖子类型%必须与自定义帖子类型%的名称匹配自定义分类法%必须与WordPress自动创建正确重写规则和链接的分类法的名称匹配
用“步行”=
通常,这种dirwalk甚至不需要,因为您只访问结构中的站点或单独的分类站点。
这样,您的重写规则将尽可能精确,并且不需要使用
add_filter( 'rewrite_rules_array', 'so23698827_add_rewrite_rules' );
然后用
add_filter( 'post_type_link', 'so23698827_filter_post_type_link', 10, 2 );
正如在接受的回答中提到的。这节省了内存和执行时间!
希望这能帮助任何人,谁是寻找这个问题与WP版本
你真幸运,我只是为了一个客户项目才这么做的。我在WordPress Stackexchange上使用了这个答案作为指导:
/**
* Tell WordPress how to interpret our project URL structure
*
* @param array $rules Existing rewrite rules
* @return array
*/
function so23698827_add_rewrite_rules( $rules ) {
$new = array();
$new['projects/([^/]+)/(.+)/?$'] = 'index.php?cpt_project=$matches[2]';
$new['projects/(.+)/?$'] = 'index.php?cpt_project_category=$matches[1]';
return array_merge( $new, $rules ); // Ensure our rules come first
}
add_filter( 'rewrite_rules_array', 'so23698827_add_rewrite_rules' );
/**
* Handle the '%project_category%' URL placeholder
*
* @param str $link The link to the post
* @param WP_Post object $post The post object
* @return str
*/
function so23698827_filter_post_type_link( $link, $post ) {
if ( $post->post_type == 'cpt_project' ) {
if ( $cats = get_the_terms( $post->ID, 'cpt_project_category' ) ) {
$link = str_replace( '%project_category%', current( $cats )->slug, $link );
}
}
return $link;
}
add_filter( 'post_type_link', 'so23698827_filter_post_type_link', 10, 2 );
注册自定义帖子类型和分类时,请务必使用以下设置:
// Used for registering cpt_project custom post type
$post_type_args = array(
'rewrite' => array(
'slug' => 'projects/%project_category%',
'with_front' => true
)
);
// Some of the args being passed to register_taxonomy() for 'cpt_project_category'
$taxonomy_args = array(
'rewrite' => array(
'slug' => 'projects',
'with_front' => true
)
);
当然,完成后一定要刷新重写规则。祝你好运!
结构体(structure,缩写成 struct)有 3 种类型,使用 struct 关键字来创建: 元组结构体,总的来说是根据元组来命名。 C 语言风格的结构体 c_struct。 单元结构体,不带字段,在泛型中很有用。 // 单元结构体 struct Nil; // 元组结构体 struct Pair(i32, f32); // 带有两个字段的结构体 struct Point { x:
我正在使用wordpress和自定义post类型的UI插件和ACF插件。试图通过自定义分类法构建具有多个自定义文章类型提要的“单个”模板。使用这段代码,通过一些变化来找出我做错了什么。 连续得到2段这样的代码 是一个分类字段。上面显示的代码只显示了所有的“产品”帖子。我还尝试使用带有taxonomy slug的文本字段。如果我不使用first if语句(
Rust 自定义数据类型主要是通过下面这两个关键字来创建: struct: 定义一个结构体 enum: 定义一个枚举类型 而常量的创建可以通过 const 和 static 关键字来创建。
存在多种方法来重新定义现有类型的行为以及提供新的类型。 重写类型编译 一个常见的需求是强制更改类型的“字符串”版本,即在create table语句或其他SQL函数(如cast)中呈现的版本。例如,应用程序可能希望强制呈现 BINARY 适用于除一个平台外的所有平台 BLOB 待渲染。在本例中,使用现有的泛型类型 LargeBinary ,是大多数用例的首选。但是为了更准确地控制类型,每个方言的编
1. 包含头文件 #import <AdHubSDK/AdHubSDK.h> 2. AdHubCustomView 的创建和初始化 在需要导入广告的ViewController头文件中导入头文件并声明实例以及声明代理 #import <AdHubSDK/AdHubSDK.h> @interface AdHubCustomViewController ()<AdHubCustomViewDele
3.4.2 构建类型 默认情况下,Android plugin 会自动的设置工程,构建 release 和 debug 两个版本。 他们主要的差异主要在于是否可以在设备上调试应用以及APK如何签名。 debug 版本会被使用已知的名称/密码自动生成的密钥/证书签名。release 版本在构建过程中不会被签名,需要构建后再签名。 这些配置可以通过一个叫 BuildType 配置。默认情况下,已经创建