[英]Add custom field to permalink / URL
我正在尝试将自定义字段数据放入自定义帖子类型页面的固定链接/ URL。
目前我已经......
website.com/customposttype/postname/
..但我想......
website.com/randomstring/postname/
customposttype =自定义POst类型randomstring =自定义后期元值随机
我正在以正常方式注册自定义帖子类型。 我已经尝试了几个无法正常工作的插件,或者在主帖子页面上工作但不在自定义帖子页面上工作。 我不久前就没有人才了!
我尝试下面的代码并获得解决方案,现在Url工作正常,但当我尝试打开其他默认的帖子和页面,然后它将显示主页内容。
add_action('init', 'wpq_add_rewrite_rules');
add_filter('post_type_link', 'wpq_permalinks', 10, 3);
function wpq_add_rewrite_rules()
{
// Register custom rewrite rules
global $wp_rewrite;
$wp_rewrite->add_rewrite_tag('%POST_TYPE%', '([^/]+)', 'POST_TYPE=');
$wp_rewrite->add_rewrite_tag('%post_custom_data%', '([^/]+)', 'post_custom_data=');
$wp_rewrite->add_permastruct('POST_TYPE', '/%post_custom_data%/%POST_TYPE%', false);
}
function wpq_permalinks($permalink, $post, $leavename)
{
$no_data = 'no-data';
$post_id = $post->ID;
if($post->post_type != 'POST_TYPE' || empty($permalink) || in_array($post->post_status, array('draft', 'pending', 'auto-draft')))
return $permalink;
$data = get_post_meta($post_id, 'permalink_data', true);
if(!$data)
$data = $no_data;
$permalink = str_replace('%post_custom_data%', $data, $permalink);
return $permalink;
}
你尝试这样做的方式非常黑客。 注册自定义帖子类型时,您有重写参数
你的函数调用应该是这样的:
$args = array(
'labels' => $labels,
'public' => true,
'rewrite' => array('slug' => 'myslug'),
'supports' => array('title', 'editor', 'thumbnail', 'revisions')
);
register_post_type(‘mycustomposttype’, $args);
请注意rewrite参数,您可以在其中设置自定义帖子类型的自定义slug。
另外请记得转到管理面板设置>>永久链接并重新保存永久链接结构,以便WordPress更新到新的slugs和URL结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.