我如何使用“getages_where”来获取静态页面的每月存档?

时间:2012-04-15 作者:Rec

我想得到静态页面的每月档案。我尝试使用下一个代码:

add_filter(\'getarchives_where\',\'my_archives_filter\');
function my_archives_filter($where_clause) {
return "WHERE post_type = \'page\' AND post_status = \'publish\'";
}
我在侧边栏中写道:

add_filter(\'getarchives_where\',\'my_archives_filter\');               
wp_get_archives(\'type=yearly\');
remove_filter (\'getarchives_where\',\'my_archives_filter\');
但它不起作用。

你能帮帮我吗?

谢谢

3 个回复
SO网友:Bainternet

wp_get_archives 已经有了post_type = \'post\' 默认情况下,要替换它,请尝试以下操作:

add_filter(\'getarchives_where\',\'my_archives_filter\');
function my_archives_filter($where_clause) {
    str_replace( "post_type = \'post\'" , "post_type = \'page\'" , $where );
}
在侧栏中:

add_filter(\'getarchives_where\',\'my_archives_filter\');               
wp_get_archives(\'type=yearly\');
remove_filter (\'getarchives_where\',\'my_archives_filter\');

SO网友:Kevin Leary

这个add_filter 之后是remove_filter 这种方法似乎有问题,我更喜欢使用这样一种有条件的方法:

/**
 * Post type archives by month
 */
function kevinlearynet_getarchives_events( $sql_where, $r ) {

    // conditions for when you want to do this
    // (don\'t do it all the time)
    if ( is_post_type_archive( \'event\' ) ) {
        $sql_where = str_replace( "post_type = \'post\'" , "post_type = \'event\'" , $sql_where );
    }

    return $sql_where;
}
add_filter( \'getarchives_where\', \'kevinlearynet_getarchives_events\', 10, 2 );

SO网友:Rudy Lister

如果您只是尝试将post\\u类型更改为page,则无需使用筛选器。只需执行以下操作:

wp_get_archives( array(
\'post_type\' => \'page\'
) );
这方面的问题是,档案面向的是帖子,而不是页面。

结束

相关推荐

How do you categorize pages?

我是一名经验丰富的Drupal开发人员,刚刚被Wordpress困住。对于新wordpress构建中选定数量的页面,我需要将它们添加到一个类别中,然后将此类别块添加到显示不同类别的页面中(选择它们将充当过滤器)。在drupal中,这将涉及创建自定义内容类型、分类法和视图块等。如何在wordpress中实现同样的效果?我知道我可以创建一个侧栏并将一个小部件放入其中。但我正在努力学习如何创建块,以便将这些页面放入其中并进行分类。