Как экспортировать сообщения WordPress? - PullRequest
1 голос
/ 31 августа 2010

Как экспортировать сообщения WordPress в XML или CSV? Я ищу аккуратный способ сделать это с помощью PHP.

Примечание: Я не хочу делать это через панель администратора, потому что я хочу автоматизировать это.

Ответы [ 3 ]

3 голосов
/ 31 августа 2010

Чтобы сделать это из PHP, сделайте это так:

  1. Получить все сообщения, помеченные publish из базы данных.
  2. Экспорт их в массив с помощью следующей функции array2xml:

.

<code><?php
function array2xml($array, $name='array', $standalone=TRUE, $beginning=TRUE)
{
    global $nested;

    if ($beginning)
    {
        if ($standalone) header("content-type:text/xml;charset=utf-8");
        $output .= '<'.'?'.'xml version="1.0" encoding="UTF-8"'.'?'.'>' . PHP_EOL;
        $output .= '<' . $name . '>' . PHP_EOL;
        $nested = 0;
    }

    // This is required because XML standards do not allow a tag to start with a number or symbol, you can change this value to whatever you like:
    $ArrayNumberPrefix = 'ARRAY_NUMBER_';

    foreach ($array as $root=>$child)
    {
        if (is_array($child))
        {
            $output .= str_repeat(" ", (2 * $nested)) . '  <' . (is_string($root) ? $root : $ArrayNumberPrefix . $root) . '>' . PHP_EOL;
            $nested++;
            $output .= array2xml($child,NULL,NULL,FALSE);
            $nested--;
            $output .= str_repeat(" ", (2 * $nested)) . '  </' . (is_string($root) ? $root : $ArrayNumberPrefix . $root) . '>' . PHP_EOL;
        }
        else
        {
            $output .= str_repeat(" ", (2 * $nested)) . '  <' . (is_string($root) ? $root : $ArrayNumberPrefix . $root) . '><![CDATA[' . $child . ']]></' . (is_string($root) ? $root : $ArrayNumberPrefix . $root) . '>' . PHP_EOL;
        }
    }

    if ($beginning)
        $output .= '</' . $name . '>';

    return $output;
}

//connect to database and select database (edit yourself)
mysql_connect("localhost", "username", "password");
mysql_select_db("databasename");

//Get all posts whose status us published.
$result = mysql_query("SELECT * FROM wp_posts WHERE post_status = 'publish'");
while($row = mysql_fetch_assoc($result))
    $posts[] = $row;

//convert to array and print it on screen:
echo "<pre>";
echo htmlentities(array2xml($posts, 'posts', false));
echo "
"; ?>
1 голос
/ 31 августа 2010

В настройках Wordpress посмотрите на wp-admin/export.php строки 28-48 (в настройках 3.0).Это код, который генерирует XML-файл, загружаемый администратором.Возможно, вы могли бы использовать это в своем собственном коде (к сожалению, он не организован в функцию, поэтому вам придется выполнить некоторую копирование-вставку).

Также вы можете автоматизировать загрузку http://yourblog/wp-admin/export.php?download,, поскольку этот URI всегда будет перенаправлять на новый экспорт XML.Для этого вам придется иметь дело с вводом учетных данных.

0 голосов
/ 31 августа 2010

По данным блога Wordpress ...

Параметры экспорта и импорта теперь доступны в разделе «Управление» в разделе администратора вашего блога.Формат XML - это расширенная версия RSS 2.0, и он будет встроен в следующую загружаемую версию WordPress (2.1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...