在遍历页面时获取所选模板

时间:2014-08-31 作者:Tau Sand

我正在尝试打印wordpress网站上的所有页面。Im使用以下代码:

$args = array( \'post_type\' => \'page\');
$the_query = new WP_Query( $args );

if ( $the_query->have_posts() ) :
    while ( $the_query->have_posts() ) : $the_query->the_post();
       get_template_part(\'content\');
    endwhile;
endif;
这很好,但我希望每个页面都使用管理员在“管理”菜单中选择的模板呈现。是否可以获取模板名称,以便我可以将其提供给get\\u template\\u部件?

顺致敬意,

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

为页面选择的模板的文件名保存在一个名为_wp_page_template, 您可以这样获得:

$template_filename = get_post_meta( get_the_ID(), \'_wp_page_template\', true );
现在您的文件名如下example-template.php, 使用它,您可以确定要加载哪个模板,如果您命名正确,那么您可以执行以下操作:

$template_fn_wo_ext = substr( $template_filename, 0, -4 );
删除最后四个字符example-template, 现在您可以执行以下操作:

$template_fn_parts = explode( \'-\', $template_fn_wo_ext );
返回一个包含字符串部分的数组,在-, e、 g。$template_fn_wo_ext[0] 包含example. 因此,您可以使用以下方式加载模板:

get_template_part( $template_fn_wo_ext[0], $template_fn_wo_ext[1] );
这应该会让您有一个想法并开始,但这只是一个示例,因此可能需要进行微调并使其适合您的需要。

结束

相关推荐