我有一个带有自定义类型(地点)的WordPress安装,它会产生这种永久链接结构:
http://example.com/places/the-first-site/
我想展示我的所有网站:
http://example.com/places/visit-the-first-site-and-enjoy/
其中'visit'和'and-enjoy'将始终是那些特定的单词(常量)。
更好的是,我想将自定义分类法(年份)作为元数据
地方/造访的先站点和享受-1985 /
我可以访问数据库并修改所有帖子的帖子名称,但我也必须为新帖子做,我正在寻找一些自动规则,但找不到怎么做。
也许是一些重写规则,但我不知道该怎么做。
任何想法??
答案 0 :(得分:0)
您不必须编辑 数据库 中的任何内容, 任何代码在你的WordPress安装中;您可以直接通过 WordPress管理面板实现。
在信息中心中,点击设置下的永久链接子菜单; there,您必须选择自定义结构选项并将其设置如下,以达到您想要的效果:
<强>
/places/visit-%postname%-and-enjoy-%year%/
强>
请注意:在这里,我们使用 %postname%
和 %year%
Structure Tags来获取帖子的名称及其相应的出版年份。
不要忘记点击页面上的保存更改按钮以实现更改。
...详细了解Permaklinks(一般知识)。
对于评论中进一步表达的自定义帖子类型和分类,您需要一个自定义解决方案,根据您的能力,需要进行一些编码和/或调整;您可以使用Custom Post Type Permalinks中的此便捷插件(WordPress.org Plugins repository)。
如果你选择编码,这个posts同样对你有很大的帮助,可以帮助你进一步开始和进一步理解。
答案 1 :(得分:0)
你有像save_post或pending_to_publish这样的差异钩子,你可以在其中设置或更改“post_name”(这对应于永久链接slug)。
答案 2 :(得分:0)
将特定单词添加到WordPress自定义类型slug您必须注册自定义重写规则。 假设这是您的网址http://example.com/places/the-first-site! 你有一个帖子类型的地方。
function add_rewrite_rules()
{
$wp_rewrite->add_rewrite_tag('%places%', '([^/]+)', 'places=');
$wp_rewrite->add_rewrite_tag('%state%', '([^/]+)', 'state=');
$wp_rewrite->add_permastruct('places', 'places/visit-%state%-and-enjoy/', false);
}
function permalinks($permalink, $post, $leavename)
{
$no_data = 'no-data';
$post_id = $post->ID;
if($post->post_type != 'story' || empty($permalink) || in_array($post->post_status, array('draft', 'pending', 'auto-draft')))
return $permalink;
$state = get_post_meta($post_id, 'location', true);
if(!$state)
$state = $no_data;
$permalink = str_replace('%state%', $state, $permalink);
return $permalink;
}
add_action('init', 'add_rewrite_rules');
add_filter('post_type_link', 'permalinks', 10, 3);
将此代码放入自定义帖子类型插件中。如果找不到页面错误,请更改固定链接设置。或制作自定义模板文件以显示此帖子。