Wordpress 将自定义字段添加到永久链接/URL

Wordpress 将自定义字段添加到永久链接/URL,wordpress,custom-post-type,permalinks,Wordpress,Custom Post Type,Permalinks,我正在尝试将自定义字段数据放入自定义帖子类型页面的permalink/URL中 现在我有 website.com/customposttype/postname/ …但是我想 website.com/randomstring/postname/ customposttype=自定义帖子类型 randomstring=自定义后置元值random 我正在以正常方式注册自定义帖子类型。 我已经尝试了几个插件,它们要么不起作用,要么在主帖子页面上起作用,但在自定义帖子页面上不起作用。 我很久以前就没有天

我正在尝试将自定义字段数据放入自定义帖子类型页面的permalink/URL中

现在我有

website.com/customposttype/postname/

…但是我想

website.com/randomstring/postname/

customposttype=自定义帖子类型 randomstring=自定义后置元值random

我正在以正常方式注册自定义帖子类型。 我已经尝试了几个插件,它们要么不起作用,要么在主帖子页面上起作用,但在自定义帖子页面上不起作用。 我很久以前就没有天赋了

我尝试了下面的代码并得到了解决方案,现在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参数,您可以在其中设置自定义post类型的自定义slug


另外,请记住转到管理面板设置>>Permalinks并重新保存permalink结构,以便WordPress更新到新的slug和URL结构。

您尝试这样做的方式非常粗糙。注册自定义帖子类型时,您有重写参数

其中,函数调用应如下所示:

$args = array(
'labels' => $labels,
    
           'public' => true,
    
           'rewrite' => array('slug' => 'myslug'),
    
           'supports' => array('title', 'editor', 'thumbnail', 'revisions')
);



register_post_type(‘mycustomposttype’, $args);
注意rewrite参数,您可以在其中设置自定义post类型的自定义slug


另外,请记住转到管理面板设置>>永久链接并重新保存永久链接结构,以便WordPress更新到新的slug和URL结构。

它不起作用。所有页面和帖子重定向到主页:'(不起作用。所有页面和帖子重定向到主页:'(