@用户滥用者的输入提供了关于使用自定义帖子类型来解决自定义需求的有用讨论。然而,这仍然没有回答我的主要问题:
我可以在循环中查询页面模板类型或自定义元数据吗?
我想使用带有自定义模板的wordpress静态页面作为自定义帖子类型的替代。对于本例中涉及的少量页面而言,自定义帖子类型看起来真的有些过头了,并且会在WordPress菜单中添加额外的自定义类型条目。
我最终回答了我问题的这一部分,结果证明这很简单:
我创建了一个新的行动呼吁。处理页面的php文件,以及pages\\u调用操作。php模板文件:
<?php
$callstoaction = get_pages(array(
\'meta_key\' => \'_wp_page_template\',
\'meta_value\' => \'page_call-to-action.php\',
\'post_status\' => \'publish,private\',
\'hierarchical\' => 0,
\'sort_column\' => \'menu_order\',
\'sort_order\' => \'ASC\'
);
?>
后面跟着一个循环,如下所示:
<?php foreach($callstoaction as $i => $calltoaction) : ?>
// Do some stuff
<?php endforeach; ?>
请注意标识页面模板属性的meta\\u键和meta\\u值对。
这使您能够创建标准wordpress页面,通过标准wordpress UI将其模板设置为“Call to Action”(page\\u Call-to-Action.php),然后能够像上面所述的那样在页面处理循环中专门处理它们,避免了对自定义帖子类型的需要。
以下是模板文件供参考:
<?php
/**
* Template Name: Call To Action
* Description: Provides a basic template for call-to-action pages.
*/
get_header(); the_post(); ?>
<div id="staticpage-single" <?php post_class() ?>>
// template layout goes here
</div>
<?php get_footer(); ?>
到目前为止,我在考虑模板化静态页面与自定义帖子类型时看到的唯一真正的缺点是wordpress静态页面“不包含在站点的提要中”(如下面的Codex链接所述),然而Hesham Zebida指出(见下面的链接)有一个“rss包含页面”插件可以解决这个问题:)
另请参见: