按模板从wp_list_ages中排除

时间:2015-10-21 作者:Carlos Espinosa

我有一系列的“谢谢”页面,这些页面来自不同的表单提交。我希望能够根据它们的模板将其从网站地图中排除。具体来说,作为一个简单的示例,将它们排除在使用wp\\U list\\U页面的基本404页面上。

我知道如何按ID手动排除,但我正在寻找一种更好的方法来大规模地执行此操作,并寻求一种更简化的方法,而不必编辑代码。

这是否可以从模板角度(模板中的代码)或从挂钩角度(按模板排除vs按ID排除)进行访问。本质上,目标是让前端内容创建者更容易做到这一点,从而避免在发布单个页面的过程中必须包含多个人。

\'exclude\'      => \'template-name\',   versus the standard    \'exclude\'      => \'17\',

1 个回复
SO网友:Milo

我希望内容创建者能够在编辑页面时选择一个页面模板,指出该页面不应包含在网站地图中

这对我来说似乎有点尴尬。我建议改为add a meta box 这使内容创建者能够为每个页面切换“包含在站点地图中”设置。也就是说,从wp_list_pages 将是相同的,因为选定的模板也存储在post元数据下的键_wp_page_template.

第一步是获取满足meta query, 无论是检查页面模板还是在元框处理程序中设置的标志,以指示该页面将从站点地图中排除。我们还设置fields 参数,因此返回的帖子只包含ID数组。与查询整个页面对象相比,这将节省内存。

$args = array(
    \'fields\' => \'ids\',
    \'post_type\' => \'page\',
    \'posts_per_page\' => -1,
    \'meta_query\' => array(
        array(
            \'key\' => \'_hide_from_sitemap\',
            \'compare\' => \'EXISTS\',
        )
    )
);
$pages_to_exclude = new WP_Query( $args );
运行后,$pages_to_exclude->posts 将是一个页面ID数组,您可以将其作为exclude 的参数wp_list_pages.

相关推荐

ExcludeCat函数颠倒博客帖子的顺序

我正在使用下面的代码从主页上的查询中删除类别#5377。然而,出于某种原因,此代码也颠倒了博客帖子的顺序。如何将此代码更改为仅删除类别#5377并保持相同的帖子顺序?function excludeCat($query) { if ( $query->is_home ) { $query->set(\'cat\', \'-5377\'); } return $query; } add_filter(\'pr