すべての投稿を個別のプレーンテキストファイルとしてエクスポートします。そのため、形式は次のようになります。
title.txt
Title: title
Pub date: date
Category: cat
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
これは可能ですか?これを行うためのプラグインや回避策はありますか?
ありがとう。
これを試してください(このコードをどこに置くかによって、wp-load.php
をロードすることによってWPをブートストラップする必要があるかもしれません)。
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
//'posts_per_page' => -1 //uncomment this to get all posts
);
$query = new WP_Query($args);
while ( $query->have_posts() ) : $query->the_post();
$f = fopen(get_the_title() . '.txt', 'w');
$content = 'Title: ' . get_the_title() . PHP_EOL;
$content .= 'Pub date: ' . get_the_date() . PHP_EOL;
$content .= 'Category: ';
foreach (get_the_category() as $cat) {
$content .= $cat->cat_name . ', ';
}
$content .= PHP_EOL . PHP_EOL;
$content .= get_the_content();
fwrite($f, $content);
fclose($f);
endwhile;
2つの投稿に同じタイトルがある場合は、テキストファイルは1つだけになります。
ぎこちない検索では、これを行うプラグインは表示されません。ただし、独自のプラグインを作成するための例として、組み込みエクスポータを使用することができます。これは/wp-admin/includes/export.php
にあります。
基本的に、すべての投稿を取得するためにデータベースにクエリを実行し、後でインポートできるビルド前のXMLテンプレートにコンテンツをダンプするPHPページです。
まるでJekyllのような静的ブログジェネレータに切り替えたいかのようです。次の答えはpdbの答えに基づいており、すぐに使えるはずです。私の答えは対処することができます:
ここにあります:
<?
require_once('wp-load.php');
function getFeaturedImage($postid) {
$featured_image = "";
$array = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' );
if (count($array)>1) {
$featured_image = $array[0];
$featured_image = str_replace('http://martin-thoma.com/wp-content/uploads/', '', $featured_image);
}
return $featured_image;
}
$args = array(
'post_type' => 'post',
'post_status' => 'draft',
'posts_per_page' => -1 //uncomment this to get all posts
);
$query = new WP_Query($args);
$i=0;
$titles = array();
while ( $query->have_posts() ) : $query->the_post();
$i++;
$name = $post->post_name;
if ($name == "") {
$name = strtolower(get_the_title());
$replacements = array(
' ' => '-',
'#' => 'nr',
'/' => 'or',
'ö' => 'o',
'ü' => 'u',
'ä' => 'a',
'ß' => 'ss'
);
$name = str_replace(array_keys($replacements), $replacements, $name);
}
if (array_key_exists($name, $titles)) {
$name = $post->post_name."-".$post->ID;
} else {
$titles[$name] = true;
}
echo $name."<br/>";
$f = fopen("export/".$name. '.md', 'w');
$content = "---".PHP_EOL;
$content.= "layout: post".PHP_EOL;
$content.= "title: ".get_the_title().PHP_EOL;
$content.= "author: ".get_the_author().PHP_EOL;
$content.= "date: ".get_the_date('Y-m-d h:i:s').PHP_EOL;
$content.= "categories: ".PHP_EOL;
$cats = get_the_category();
if ($cats) {
foreach($cats as $category) {
$content .= '- '.$category->name.PHP_EOL;
}
}
$content .= 'tags: ';
$posttags = get_the_tags();
if ($posttags) {
$content .= PHP_EOL;
foreach($posttags as $tag) {
$content.= "- ".$tag->name.PHP_EOL;
}
} else {
$content .= "[]".PHP_EOL;
}
echo wp_get_attachment_image_src(get_the_post_thumbnail($post->ID));
$content .= 'featured_image: '.getFeaturedImage($postid).PHP_EOL;
$content .= '---'.PHP_EOL;
$content .= get_the_content();
fwrite($f, $content);
fclose($f);
endwhile;
echo $i." posts exported."
?>