是否将条目和多个自定义字段元导出为.csv?

时间:2012-02-15 作者:Siebird

第一次海报。我正在尝试将一组自定义帖子导出到csv文件中,以便可以轻松地将它们导入到新的数据库中。我已经将本机导出为xml,但它不是我需要的正确格式。我需要一个基于列的格式(即姓名、身高、体重等)。

我有一个自定义贴子,有几个自定义字段。我在将它们合并到一行时遇到了问题,而不是为每个元类型创建一行。有没有一种方法可以编写一个sql查询,该查询对每个元类型有许多选择,并将它们组合成一行多列?

这是我到目前为止所拥有的,它为每个同名的元类型提供了一列和一新行

SELECT p.post_title AS Name
FROM wp_posts AS p
INNER JOIN wp_postmeta AS pm 
ON p.ID = pm.post_id
WHERE p.post_type = \'prospects\'
ORDER BY p.post_date DESC
现在,我如何开始为每个元类型添加列(选择),并将它们合并到一行中:

AND (
  SELECT m1.meta_value AS Height
  WHERE m1.meta_key = \'_height\'
)
AND (
  SELECT m2.meta_value AS Weight
  WHERE m2.meta_key = \'_weight\'
)

2 个回复
最合适的回答,由SO网友:Siebird 整理而成

在@toscho的帮助下指出get_post();, 我能吐出一个。带有空白模板的csv。起初,我的内存限制问题是数据量的b/c,所以我将站点移动到本地,并能够使用get_post();

其要点如下:

<ol>
<?php
global $post;
$args = array( 
    \'numberposts\' => -1,
    \'orderby\' => \'post_title\',
    \'order\' => \'DESC\',
    \'post_type\' => \'prospects\',
    \'post_status\' => \'publish\'
);
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post); ?>
    <li><?php echo $post->ID ?>, <?php the_title(); ?>, <?php echo get_field(\'prospect_profile_image\'); ?>, <?php echo get_field(\'height\'); ?>, <?php echo get_field(\'weight\'); ?>, <?php echo get_field(\'born\'); ?>, , <?php echo get_field(\'email\'); ?>, <?php echo get_field(\'phone\'); ?>, <?php echo get_field(\'street_address\'); ?>, <?php echo get_field(\'city\'); ?>, <?php echo get_field(\'state\'); ?>, <?php echo get_field(\'zip_code\'); ?>, <?php echo get_field(\'position_1\'); ?>, <?php echo get_field(\'position_2\'); ?>, <?php echo get_field(\'bats\'); ?>, <?php echo get_field(\'throws\'); ?>, <?php echo get_field(\'fathers_name\'); ?>, <?php echo get_field(\'mothers_name\'); ?></li>
<?php endforeach; ?>
</ol>
起初,我使用订单列表来确保我得到了所有记录。

SO网友:fuxia

使用get_posts() 并迭代结果数组。论点\'numberposts\' => -1 将生成完整的帖子列表。

如果你看WP_Query::get_posts() 在里面wp-includes/query.php 您可能会知道这样一个查询有多么复杂(这不是该函数中代码样式的借口…)。

欢迎使用WordPress堆栈交换!

结束