使用wp_INSERT_POST和POST_NAME无法正确显示固定链接

时间:2019-05-10 作者:samjco

所以我使用wp_insert_post() 动态创建新帖子。

但我正在尝试将永久链接结构实现为:Parent/Child/GChild或mydomain/MYTitle/1/1/(是的,我希望Child和GChild post/permalink的标题是数字!)。

现在我知道要更改永久链接,我必须添加参数:\'post_name\' => \'something\',.

现在,我已经编写了整个脚本来循环并创建所有帖子和子帖子,一切都很好。

我所面临的问题是,post\\u名称并没有强制将标题作为post\\u名称,从而摆脱了我的永久链接结构。

如果子post\\u名称是字母,则可以正常工作,但会修改post_name 如果我使用数字作为post\\u名称(1变为1-2)。

我想要的结果应该是:

mydomain/MYTitle/1/1/ 而不是mydomain/MYTitle/1-2/1-2/

我的循环代码如下所示:

foreach( ... ):

$parent_args = array(
      \'post_title\' => wp_strip_all_tags($post_title),
      \'post_name\' => wp_unique_post_slug($post_title),
);    
$parent_post_id = wp_insert_post( $parent_args ); 

$i = 1;
foreach( ... ):

$child_args = array(
      \'post_title\' => wp_strip_all_tags($i),
      \'post_name\' => wp_unique_post_slug($i),
      \'post_parent\'  => $parent_post_id, 
);    
$child_post_id = wp_insert_post( $child_args );

$i++;

endforeach; //child


endforeach;//parent
有人知道如何修复此问题吗?

1 个回复
最合适的回答,由SO网友:samjco 整理而成

啊!

https://permalinkmanager.pro/docs/tutorials/how-to-remove-numbers-2-3-appended-to-the-permalinks/

所以-2,-3。。etc由core完成,以使Slug独特。但我知道有一种方法可以改变permalink而不是slug。我只是找不到任何地方的代码来做这件事,所以我求助于使用这个高级插件。

global $permalink_manager_uris;
foreach( ... ):

$parent_args = array(
      \'post_title\' => wp_strip_all_tags($post_title),
      \'post_name\' => wp_unique_post_slug($post_title),
);    
$parent_post_id = wp_insert_post( $parent_args ); 

// Declare the custom URI for parent post
$permalink_manager_uris[$parent_post_id] = sanitize($post_title);

$i = 1;
foreach( ... ):

$child_args = array(
      \'post_title\' => wp_strip_all_tags($i),
      \'post_name\' => wp_unique_post_slug($i),
      \'post_parent\'  => $parent_post_id, 
);    
$child_post_id = wp_insert_post( $child_args );

// Declare the custom URI for child post
$permalink_manager_uris[$child_post_id] = sanitize($post_title).\'/\'.$i;

$i++;

endforeach; //child


endforeach;//parent

update_option(\'permalink-manager-uris\', $permalink_manager_uris);

相关推荐

如何用ACF值替换自定义POST类型的Slug?

我在高级自定义字段中有一个下拉选择类型字段。值为视频和图像。我想替换自定义的post类型slug。目前,它是视频。我想改变我的网站。com/video/post name到mysite。com/1/post name或mysite。com/0/post名称我的意思是,当选择下拉值视频时,它将显示mysite。com/1/post名称。我可以替换post-type slug。function update_video_slug( $args, $post_type) { $cptslug