私はいくつかの問題でインポートされたワードプレスサイトを継承しました。アタッチメントIDとポストIDのリストがありますが、コードでそれらを再接続する必要があります。
私はこのようなすべての添付ファイルのリストを持っています。
$attachments = get_posts( array('post_type' => 'attachment','posts_per_page' => -1));
foreach ( $attachments as $key=>$attachment ) {
}
添付ファイルのID、およびそれらが関連する投稿のCSVもあります。今度はすべてのアタッチメントの親の投稿IDは '0'です、私がする必要があるのはそれぞれを更新することですので、それはparnetの投稿IDは関連する
このループのキーワードプレス機能は、attachemnts parnetの投稿IDを設定しますか?そして、更新がすべてのメタデータにも伝播されるようにします。
.... set_attachemnt_parent_id($ attachment-> ID、$ myIdFromArchives);のようなものが欲しいのですが。
ご協力いただきありがとうございます!
編集 - データベースIDを直接更新しようとしましたが、うまくいきません。
WordPressでは - 添付ファイルは 自身の投稿タイプ です。つまり、 wp_update_post()
を使って投稿を更新するだけで済みます。
$media_post = wp_update_post( array(
'ID' => $attachment_id,
'post_parent' => $post_parent_id,
), true );
if( is_wp_error( $media_post ) ) {
error_log( print_r( $media_post, 1 ) );
}
上記では、添付ファイルIDと添付ファイルの「親」となるPost IDの両方をwp_update_post()
関数に渡しますが、何らかの理由で更新できない場合は を追加する必要があります。 WP_Error を error_log にすると、問題のある部分をデバッグできます。
指定した添付ファイルIDが実際に添付ファイルであることを確認するために、wp_update_post()
関数の前に追加のチェックを行うこともできます。これは単なるチェックですので、必要ないものを誤って更新することはありません。
if( 'attachment' === get_post_type( $attachment_id ) ) {
// Update Post Code
}