特定のカテゴリ (数千の投稿を含む) からすべての投稿をテキスト ドキュメントにエクスポートする必要があります。そして、誰かがこのドキュメントに修正と変更を加え、その後、更新されたすべての投稿を WP に入力する必要があります。
そこで私は、XML 文書を作成するのが最善の方法であると判断しました (この方法により、投稿を簡単に入力することができます)。
だから私のコードは次のとおりです。
require_once(dirname(__FILE__) . '/wp-blog-header.php');
$counter = 0;
$recorded = array();
$double=0;
$handle = fopen("all_posts.xml", "w");
fwrite($handle, "<all_posts>" . "\r\n"); // the root XML tag
// get all the categories from the global category
$global_cat = get_categories(array("child_of"=>5, 'pad_counts'=>true, 'hierarchical' =>
false));
foreach($global_cat as $child_cat){
global $post;
$args = array('numberposts' => 50000,'cat' => $child_cat->cat_ID);
print_r($child_cat); echo "<br>" . $counter ."<br>";
$q_posts = get_posts($args);
foreach($q_posts as $post){
setup_postdata($post);
if( in_array($post->ID, $recorded ) ) {continue;}
$recorded[] = $post->ID;
$counter++;
$title = get_the_title();
$cur_categories = get_the_category();
$cur_tags = get_the_tags();
$d = get_the_date();
$cont = get_the_content();
fwrite($handle, "<post>" . "\r\n");
fwrite($handle, "<title>" . $title . "</title>" . "\r\n");
fwrite($handle, "<id>" . $post->ID . "</id>" . "\r\n");
fwrite($handle, "<cur_cat>" . $child_cat->name . "</cur_cat>" . "\r\n");
fwrite($handle, "<categories>\r\n");
foreach ($cur_categories as $cat) {
fwrite($handle, "<cat>" . $cat->cat_name . "</cat>");
}
fwrite($handle, "\r\n</categories>" . "\r\n");
fwrite($handle, "<tags>\r\n");
foreach ($cur_tags as $tag) {
fwrite($handle, "<tag>" . $tag->name . "</tag>");
}
fwrite($handle, "\r\n</tags>" . "\r\n");
fwrite($handle, "<date>" . $d . "</date>\r\n");
fwrite($handle, "<content>\r\n" . $cont . "</content>\r\n\r\n");
fwrite($handle, "</post>" . "\r\n");
}
}
fwrite($handle, "</all_posts>");
fclose($handle);
問題は、10,000 くらいあるので、サーバーが応答しないことです (xml ファイルが大きくなったためか、php スクリプトの処理に時間がかかりすぎたためだと思います)。2000件の投稿しかないカテゴリから投稿をエクスポートしようとした場合にのみ、うまく機能します。
それを修正する方法は何ですか?