通过 +1 php 更改永久链接的最终编号
Posted
技术标签:
【中文标题】通过 +1 php 更改永久链接的最终编号【英文标题】:change the final number of the permalink by +1 php 【发布时间】:2021-03-25 04:31:07 【问题描述】:这些天我想知道如何将我的帖子的最终永久链接数更改为 +1,我在网上找到了此代码,但需要有人帮助我更改它吗?
// Get all posts
$query = new WP_Query(array(
'post_type' => 'post',
'posts_per_page' => -1,
));
$posts = $query->get_posts();
foreach ($posts as $post)
// Get permalink
$url = $post->post_name;
// old url
$old_url = array(
'http://localhost:8888/site/testpermalink-1/',
'http://localhost:8888/site/testpermalink-1/',
'http://localhost:8888/site/testpermalink-7/',
'http://localhost:8888/site/testpermalink-4/',
'http://localhost:8888/site/testpermalink-36/',
);
// Replacement
//$replacement = '';
// Replace url
//$new_url = str_replace($old_url, $replacement, $url);
// Prepare arguments
$args = array(
'ID' => $post->ID,
'post_name' => $new_url,
);
// Update post
wp_update_post( $args );
我希望将这个列表更改为最后的数字+1,所以编辑后的这个列表应该是:
$new_url = array(
'http://localhost:8888/site/testpermalink-2/',
'http://localhost:8888/site/testpermalink-2/',
'http://localhost:8888/site/testpermalink-8/',
'http://localhost:8888/site/testpermalink-5/',
'http://localhost:8888/site/testpermalink-37/',
);
但是,这些固定链接在您更改它们后应该会自动保存。
【问题讨论】:
【参考方案1】:Permalink 是数据库中的 post_name,有时称为“slug”。
你可以做类似的事情:
foreach ($posts as $post)
// split it into pieces, dividing by - character
$pieces = explode('-', $post->post_name);
//replace last piece adding 1
$pieces[array_key_last($pieces)] = (int)$pieces[array_key_last($pieces)] + 1;
//restore pieces
$post->post_name = implode('-', $pieces);
wp_update_post( $post );
警告:array_key_last 函数从 php 7.0 开始存在!
【讨论】:
谢谢Full,但是这样我是不是要修改数据库的所有post_name? 是的,根据您在 WP_Query 的构造函数中输入的内容进行过滤! 啊好的,因为我只是想更改我放入数组中的 post_name 而不是全部,你能给我一个提示吗?非常感谢 您可以尝试根据 post_name 进行过滤,因此类似于 WP_Query(['post_name'=>['testpermalink-1','testpermalink-2']])以上是关于通过 +1 php 更改永久链接的最终编号的主要内容,如果未能解决你的问题,请参考以下文章