如果页面不存在,则自动创建页面

时间:2013-01-30 作者:Jake Lisby

我有一个WPMU实例,它不像博客网络,更像一个整体应用程序。我需要做一个检查,看看是否有3个带有“主页”、“登录”和“密码”的页面。如果没有,我需要系统自动生成它们。如果是这样,我需要系统忽略它。

现在我有以下代码,出于某种原因,每次加载一个页面时,它都会生成5篇帖子。有人对我如何更好地完成这一点有什么建议吗?

function check_pages_live(){
        if(get_page_by_title( \'home\', page ) != NULL) {
            create_pages_fly(\'home\');
        }
        if(get_page_by_title( \'login\', page ) != NULL) {
            create_pages_fly(\'login\');
        }
        if(get_page_by_title( \'password\', page ) != NULL) {
            create_pages_fly(\'password\');
        }
    }
    add_action(\'init\',\'check_pages_live\');
    function create_pages_fly($pageName) {
        $createPage = array(
          \'post_title\'    => $pageName,
          \'post_content\'  => \'Starter content\',
          \'post_status\'   => \'publish\',
          \'post_author\'   => 1,
          \'post_type\'     => \'page\',
          \'post_name\'     => $pageName
        );

        // Insert the post into the database
        wp_insert_post( $createPage );
    }

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

我想你想要:

if( get_page_by_title( \'home\' ) == NULL )
    create_pages_fly( \'home\' );
您的原始if 条件表示如果页面存在(不等于NULL),则创建页面。另外,第二个参数应该是一个字符串,尽管在这种情况下这并不重要,因为它默认为\'page\' 无论如何

SO网友:Gabriel Connolly

非常方便的功能,我会将其用于我的一些工作。为了进一步简化它,我做了一个小小的增强,就是将get\\u by\\u title()操作放入一个函数中,这样您就可以在每个页面上调用它了。

例如:

function create_page_if_null($target) {
    if( get_page_by_title($target) == NULL ) {
        create_pages_fly($target);
    }
}

function check_pages_live(){
    create_page_if_null(\'about\');
    create_page_if_null(\'contact-us\');
    create_page_if_null(\'home\');
    create_page_if_null(\'news\');
    create_page_if_null(\'privacy\');
}

结束

相关推荐

Organizing Your Pages

我在创建子页时遇到问题。到目前为止,我遵循了正确的方向:转到新页面,单击“页面父级”下拉菜单</从下拉菜单中选择适当的父页面,使当前页面成为子页面</准备就绪后单击发布当我发布页面时,会导致找不到页面。例如:假设我有一个南美页面,我添加了“儿童”页面:南美洲当我访问www.mywebsite时,我会看到阿根廷、巴西。com/南美/阿根廷它说找不到页面。但是:www.mywebsite。com/南美洲/(works)</www.mywebsite。com/阿根廷/(works) </