主题停用时删除特定的已发布页面

时间:2013-05-05 作者:Ayaz Malik

我正在开发一个主题,自动创建一个主题化页面。但问题是,当主题被切换并再次激活时,它会重新创建页面
是否可以检查页面是否已可用/发布,是否可以在主题切换/取消激活时不创建或删除页面
以下是我用来创建主题激活新页面的代码:

if (is_admin() && isset($_GET[\'activated\'] ) && $pagenow == "themes.php" ) {

global $wpdb;

    $the_page_title = \'Homepage Template\';
    $the_page_name = \'homepage-1\';
//$page_check = get_page_by_title(\'Page Title\');
$page_check_id = $page_check->ID;
   $the_page = get_page_by_title( $the_page_title );

        // Create post object
    $new_page = array(
\'post_type\' => \'page\',
\'post_title\' => \'Homepage Template\',
\'post_status\' => \'publish\',
\'post_author\' => 1,

);
if(!isset($page_check_id)){
wp_insert_post($new_page);
$new_page_data = get_page_by_title($the_page_title);
$new_page_id = $new_page_data->ID;
update_post_meta($new_page_id, \'_wp_page_template\',\'homepage-1.php\');
}
}
我的主要目标是为用户提供多个主页模板/布局,他们可以从主题管理面板或设置->阅读切换。因此,如果有更好的选择,请提出建议!

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

您正在呼叫get_page_by_title( $page_title ) 已经使用它!

if ( ! get_page_by_title( 
    _x( \'Homepage Template\', \'home page title\', \'your_theme_textdomain\' ) 
    )
)
{
    // create the page
}
不要在主题停用时删除用户内容。用户可能在该页面上投入了大量精力,可能他不知道您删除了他的作品。

但我甚至不会创建那个页面。使用home.php 最新的博客帖子和front-page.php 在头版。自定义并允许用户选择任何页面。

现在,当您的用户重命名页面并在切换回之前尝试其他主题时,您不必使用不同的标题重新创建页面。

更新以响应您的问题更新在单独的目录中创建主页模板,例如/front-templates. 然后在customizer中提供这些模板作为选项,并将模板名称保存在主题选项中。

在您的front-page.php 检查选项并包括匹配的模板。

示例代码

$template = get_theme_mod( \'front-page-template\', \'default\' );

locate_template( "front-templates/$template.php", TRUE, TRUE );
现在您不必创建新页面,因为front-page.php 将在头版自动使用。

结束

相关推荐

必需:找不到wp_link_ages。请参阅:WP_LINK_PAGES by Theme Checker

我已经通过WordPress主题检查器运行了我的主题,看看它是否可以提交给WordPress。组织。我遇到了以下错误:必需:找不到wp\\u link\\u页面。请参阅:wp\\U link\\u页面但事实并非如此。我正在使用自定义函数wp_my_own_link_pages() 它是wp_link_pages(). 它为主题生成具有兼容HTML结构的分页。我错过了一些必要的东西吗?我怎样才能做到这一点?