创建自定义帖子类型(使用Pod),然后将现有页面转换为自定义帖子类型?

时间:2018-06-03 作者:Henry

以下是我正在努力实现的目标,我相信这是可能的。

我的WordPress安装中有3000多页。

从一开始,我就应该把这些页面分成“自定义页面”,但当我开始写博客时,我并不知道自定义页面的能力和威力。

所以,我想做的是:将某些页面从父URL移动到自定义页面。。。。

例如,我当前的标准wordpress结构包括一些页面,这些页面的父级“holding”URL表示“水果”和“蔬菜”(见下文)

domain.com/fruit/page-1
domain.com/fruit/page-2
domain.com/fruit/page-3
domain.com/fruit/page-4

domain.com/vegetables/page-1
domain.com/vegetables/page-2
domain.com/vegetables/page-3
domain.com/vegetables/page-4
我想为这两个“父目录”创建自定义页面类型(使用pods插件),在我上面的示例中是“水果”和“蔬菜”。

所以,这是我的计划。。。。

使用POD创建自定义页面类型将旧页面转移到新的自定义页面模板中,我该怎么做?或者“最佳”方法是什么?

谢谢

1 个回复
SO网友:Krzysiek Dróżdż

有很多方法可以做到这一点,很难说哪种方法是最好的。

第一部分是注册您的CPT-我想这很容易。假设您已经注册了CPT,这些CPT被称为fruitvegetable.

因此,现在唯一要做的就是将现有页面转换为CPT。

What will we need?

<父页的ID,运行SQL代码的能力

How to do this?

只需运行此查询:

UPDATE prefix_posts 
SET post_parent = 0, post_type = \'vegetable\'
WHERE post_type = \'page\' AND post_parent = <VEGETABLE_PAGE_ID>
还有PHP版本,因为这样运行可能会更容易一些:

function convert_children_of_page_to_cpt( $page_slug, $cpt_slug ) {
    global $wpdb;

    $page = get_page_by_path( $page_slug );
    if ( $page ) {
        $wpdb->update(
            $wpdb->posts,
            array( \'post_parent\' => 0, \'post_type\' => $cpt_slug ),
            array( \'post_parent\' => $page->ID, \'post_type\' => \'page\' )
        );
    }
}
DISCLAIMER: 当然,您应该在执行这些查询之前备份数据库;)

结束

相关推荐