询问循环中的页面以检查模板类型或自定义元数据(页面与帖子)

时间:2013-05-07 作者:Paul Zee

我花了几天时间研究如何使用WP静态页面,这与帖子是分开的。

虽然我找到了有用的指导,但似乎找不到任何好的教程或示例来演示如何使用修改后的WordPress循环来处理页面,该循环将使我能够筛选特定的页面条件并提取相关内容。

我正在创建一个每年用于活动的网站。我想为调用操作创建一个页面类型(或自定义帖子类型)。我的期望是,行动号召页面的数量永远都是有限的:通常只有几个,而且站点可能不会超过10个。

我希望主页列出这些页面上的内容摘要,并使用循环进行构建:但我希望通过特定页面内容类型(例如CallToAction)以及状态指示器(例如“粘滞”或活动)来过滤此循环。

我想通过模板查询页面,或者使用一些其他指示符,例如我检查的自定义字段。

能够设置所需的内容页面顺序,并按照该顺序对其外观进行排序也是一项要求,我希望这些页面显示在站点菜单中:可能在操作调用的父菜单下。

由于页面数量有限且相对静态,静态页面感觉是一种很好的方法,但我目前的阅读表明,我想用循环控制做什么可能很有挑战性,甚至可能是不可能的。

我的主要问题是,我是否可以通过查询页面来了解循环中的模板类型或自定义元数据?

自定义帖子类型似乎是一种可行的解决方案,但使用单独的帖子类型似乎有些过头了。

建议?

【2013年5月14日编辑,以简化/澄清】

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

@用户滥用者的输入提供了关于使用自定义帖子类型来解决自定义需求的有用讨论。然而,这仍然没有回答我的主要问题:

我可以在循环中查询页面模板类型或自定义元数据吗?

我想使用带有自定义模板的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包含页面”插件可以解决这个问题:)

另请参见:

SO网友:Adam

我将创建一个“Events”自定义帖子类型,然后创建一个“Call to Action”自定义分类法,并将此分类法与自定义帖子类型相关联。

通过这种方式,您可以拥有无限数量的事件,这些事件可以与分类术语相关联(您的行动呼吁)。这更有意义,因为您计划很少有行动调用类型(或术语)。

您可以按帖子类型和分类法查询帖子,此外,您还可以按元键进行查询(如果您将自定义字段附加到帖子类型以获得更多定义)。

请将您的注意力集中在本法典页面上:

http://codex.wordpress.org/Class_Reference/WP_Query

...了解更多关于如何按类型、分类法和元查询帖子的信息;更不用说了。

下面是一个设置基本查询以按指定的帖子类型和分类进行查询的示例。

$args = array(
    \'post_type\' => \'events\', //this is a custom post type
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'calltoaction\', //this is a custom taxonomy
            \'field\' => \'slug\',
            \'terms\' => \'somecalltoactionterm\' //a term within your taxonomy
        )
    )
);
$query = new WP_Query( $args );
您可以使用通过表单动态设置这些参数$_GET 如果您想创建一个过滤器,以响应用户在下拉菜单或复选框中更改的值。

相关阅读:

结束

相关推荐

force login loophole

我想限制对WordPress网站的访问,只允许注册用户访问。我尝试了以下插件:它们都有相同的问题:在看到登录页面后,您可以轻松地在浏览器地址栏中重新键入URL,以绕过登录屏幕,直接访问主页,而无需登录。只有主页可以通过这种方式访问。单击任何菜单,将返回登录屏幕。我怀疑我的网站有问题,而不是插件有问题。我有以下活动插件:高级自定义字段Akismet分析360自定义帖子模板登录重定向选择问题(&L);A-WordPress问答插件原始HTML Relevanssi版本控制快速类型搜索(Swiftype Sea