私は次のような状況があります。誤ってすべての行のpost_name
表のwp_posts
列を更新しました。今、私はそれらをどういうわけか更新する必要があります。私はWP
がスラッグwp_unique_post_slug
を生成するためにこの関数を使うことを研究しました。
誰かがこれを行う方法を私に提供してもらえますか?私はPHP
、プラグインなどを知りません。これを行うために何が必要ですか?
@toschoはすでにここ に答えていたので 、はい、これは可能です。
このコードをあなたのテーマのfunctions.php
にコピーするだけでいいのです。
// get all posts
$posts = get_posts( array ( 'numberposts' => -1 ) );
foreach ( $posts as $post )
{
// check the slug and run an update if necessary
$new_slug = sanitize_title( $post->post_title );
// use this line if you have multiple posts with the same title
$new_slug = wp_unique_post_slug( $new_slug, $post->ID, $post->post_status, $post->post_type, $post->post_parent );
if ( $post->post_name != $new_slug )
{
wp_update_post(
array (
'ID' => $post->ID,
'post_name' => $new_slug
)
);
}
}
有効なプラグインヘッダーと上記のコードを使用して、pluginsフォルダにyourplugin.php
ファイルを作成する場合は、そのためのプラグインも作成できます。
<?php
/*
Plugin Name: Your Plugin
Plugin URI: http://www.example.com
Description: description
Version: 0.1
Author: thatsyou
Author URI: http://www.yourdomain.com
License: MIT
*/
//yourcode
?>
このコードをfunctions.php
にコピーするか、プラグインをアクティベートすると、常に実行されることに注意してください。ここで一度だけコードを実行する方法についていくつかのアイデアを得ることができます。 ベストプラクティス