复制以元形式存储的内容以发布内容

时间:2020-08-11 作者:themattyg

我正在一个网站上工作,该网站有一个使用元字段存储块的现有主题(IMO的坏做法是预块编辑器)。

问题是有300多个帖子,所有不同的;“块”;存储在看起来像重复的元字段中(即flexible\\u content\\u 1\\u content、flexible\\u content\\u 2\\u content等)。有人知道使用WP CLI或自定义代码将元数据内容复制到post内容的方法吗?如果我可以在块编辑器中将元数据复制到单独的块中,则会获得额外的分数。

1 个回复
最合适的回答,由SO网友:Nate Allen 整理而成

下面是一个如何获取元数据并将其设置为帖子内容的示例。您需要将所有元键添加到$meta_fields 大堆

显然,在生产环境中运行之前,请在本地进行测试,因为它将覆盖帖子内容中当前的内容。

function migrate_post_data() {   
    // Add all the meta keys you want to migrate to this array.
    $meta_fields = array(
        \'flexible_content_1_content\',
        \'flexible_content_2_content\'
    );

    // Get all the posts.
    $args = array(
        \'post_type\'      => \'post\', // You may need to change this.
        \'posts_per_page\' => 400,
    );
    $posts = get_posts( $args );

    // Loop over each post.
    foreach ( $posts as $post )  {
        $meta_field_content = array();

        // Loop over each meta field and get their content, adding it to an array.
        foreach( $meta_fields as $meta_field ) {
            $content = get_post_meta( $post->ID, $meta_field, true );

            if ( ! empty( trim( $content ) ) ) {
                $meta_field_content[] = $content;
            }
        }

        if ( empty( $meta_field_content ) ) {
            continue;
        }

        // Set the the post content as whatever the meta fields were.
        $post_args = array(
            \'ID\' => $post->ID,
            \'post_content\' => implode( \' \', $meta_field_content ),
        );

        wp_update_post( $post_args );
    }
}

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在