web-dev-qa-db-fra.com

Exporter tous les articles sous forme de fichiers individuels en texte brut

Je souhaite exporter tous mes messages sous forme de fichiers individuels en texte brut. Ainsi, le format peut être quelque chose comme:

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

Est-ce possible? Y at-il un plugin ou une solution de contournement pour faire cela?

Merci.

5
samiles

Essayez ceci (vous devrez peut-être amorcer WP en chargeant wp-load.php, selon l'endroit où vous avez mis ce code).

$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;

N'oubliez pas que si deux publications ont le même titre, vous n'obtiendrez qu'un seul fichier texte.

5
pbd

Une recherche superficielle ne fait apparaître aucun plugin qui le fasse ... mais vous pouvez utiliser l'exportateur intégré comme exemple pour créer votre propre plugin. Il est situé dans /wp-admin/includes/export.php.

Il s’agit essentiellement d’une page PHP qui interroge la base de données afin d’obtenir l’ensemble de vos publications, puis transfère le contenu dans un modèle XML de pré-génération pouvant être importé ultérieurement.

3
EAMann

Il semblerait que vous souhaitiez basculer vers un générateur de blog statique, tel que Jekyll. La réponse suivante est basée sur la réponse de pdb et devrait être prête à être utilisée. Ma réponse peut traiter avec:

  • poste multiple avec le même titre
  • Umlauts allemands

C'est ici:

<?
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