📅  最后修改于: 2023-12-03 15:14:16.648000             🧑  作者: Mango
本文将介绍如何使用 PHP 对 CPT(自定义文章类型)的 URL 进行重写。CPT 的 URL 重写可以更加美观和有意义,也可以为 SEO 带来好处。
在开始之前,你需要先创建一个 CPT。可以在 functions.php
文件中添加以下代码:
function create_custom_post_type() {
register_post_type('custom_post_type',
array(
'labels' => array(
'name' => 'Custom Post Type',
'singular_name' => 'Custom Post Type'
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'custom-post-type'),
)
);
}
add_action('init', 'create_custom_post_type');
以上代码将创建一个名为 'Custom Post Type'
的 CPT,并将其 slug 设置为 'custom-post-type'
。
我们可以使用以下代码对 CPT 的 URL 进行重写:
function custom_post_type_permalink($post_link, $post) {
if (get_post_type($post) === 'custom_post_type') {
$terms = wp_get_object_terms($post->ID, 'category');
if ($terms) {
return str_replace('%category%', $terms[0]->slug, $post_link);
}
}
return $post_link;
}
add_filter('post_type_link', 'custom_post_type_permalink', 1, 2);
以上代码使用了 post_type_link
过滤器,这个过滤器用于修改 CPT 的 URL。在过滤器中,我们首先判断该文章是否为 'custom_post_type'
。之后,我们获取该文章所属分类的 slug,并将其替换为 URL 中的 %category%
。
最后,我们需要刷新 permalink,并在 functions.php
文件中添加以下代码:
function custom_flush_rewrite_rules() {
flush_rewrite_rules();
}
add_action('init', 'custom_flush_rewrite_rules');
以上代码将在每次刷新页面时刷新 permalink。
现在,我们可以在文章详情页面中看到 URL 已被重写。尝试试着创建一个属于 'custom-post-type'
的文章,并将其添加到某个分类中,查看其 URL 是否已被正确重写。
对 CPT 进行 URL 重写可以让我们更好的控制文章 URL 的样式,更加美观和有意义。同时,这也为 SEO 带来了好处。