web-dev-qa-db-ja.com

すべての投稿を個別のプレーンテキストファイルとしてエクスポートする

すべての投稿を個別のプレーンテキストファイルとしてエクスポートします。そのため、形式は次のようになります。

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

これは可能ですか?これを行うためのプラグインや回避策はありますか?

ありがとう。

5
samiles

これを試してください(このコードをどこに置くかによって、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つだけになります。

5
pbd

ぎこちない検索では、これを行うプラグインは表示されません。ただし、独自のプラグインを作成するための例として、組み込みエクスポータを使用することができます。これは/wp-admin/includes/export.phpにあります。

基本的に、すべての投稿を取得するためにデータベースにクエリを実行し、後でインポートできるビルド前のXMLテンプレートにコンテンツをダンプするPHPページです。

3
EAMann

まるで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."
?>
0
Martin Thoma