子目录中的页面模板和自动生成器

时间:2014-08-12 作者:Sagive

这可能是在黑暗中拍摄,但接下来。。。

我知道,从wp 3.4开始,我可以把页面模板aka页面模板。子文件夹中的php。(参考号:Page templates in subdirectories) 这很好,可以帮助我在拥挤的自定义主题文件夹中进行大量订购。

this works - however:
我需要自动创建许多主题激活页面,因此,我使用下面添加的脚本。

but:
如果页面位于子文件夹中,则无法选择/设置页面模板。

The script i use:

$start_number   = 2;
$iim_pages      = array(\'tools\', \'clients-manager\', \'task-manager\');

foreach($iim_pages as $page) {

    $page_title     =   ucwords(str_replace(\'-\', \' \', $page));
    $page_filename  =   \'page-\'.$page.\'.php\';

    $page_check = get_page_by_title($page_title);
    $new_page = array(
        \'post_type\'     => \'page\',
        \'menu_order\'    => $start_number,       
        \'post_title\'    => $page_title,
        \'post_content\'  => \'\',
        \'post_status\'   => \'publish\',
        \'post_author\'   => 1,
    );
    if(!isset($page_check->ID)){
        $new_page_id = wp_insert_post($new_page);

        update_post_meta($new_page_id, \'_wp_page_template\', $page_filename);  
        // THIS WORKS! : add_post_meta($new_page_id, \'testmeta\', $page_filename);  

    }

    $start_number++;
}
我尝试了许多变体,但wp似乎没有设置页面模板,除非在子文件夹之外

有人能提供解决方案吗?

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

使用单个页面模板并使用get_template_part 拉入每个页面的唯一部分。

因此,不是:

update_post_meta($new_page_id, \'_wp_page_template\', $page_filename);
您将拥有:

update_post_meta( $new_page_id, \'_wp_page_template\', \'newpagetemplate.php\' );
update_post_meta( $new_page_id, \'sagive_page_type\', $page );
然后在新页面模板中:

$type = get_post_meta( get_the_id(), \'sagive_page_type\', true );
get_template_part( \'parts/type\', $type );
给你一个包含文件的零件文件夹type.php, type-tools.php etc等

但更可靠的是,您建议这些页面模板用于显示自定义帖子类型。如果这是真的,那么您可以使用归档。php来实现这一点,并使用自定义的post类型归档。这将简化您的代码并允许您使用archive-tools.php 等等,并消除了创建任何页面的需要。

结束

相关推荐

Multiple pages to show posts

我还没有任何代码或页面可以显示,所以我只能描述我的问题。我有一组帖子,还没有分类或分类。在我的主页上,我有一个“查看所有帖子”链接,链接到View\\u all\\u帖子。php页面。在view\\u all\\u帖子上。php页面我有一个显示所有帖子的简单循环。我只想在view\\u all\\u posts上显示10篇文章。php页面,并将其余的帖子链接到下一页的view\\u all\\u posts页面。因此,view\\u all\\u posts将显示10篇文章,然后有链接显示下一页,其余的链