如何在不手动创建新页面的情况下按自定义字段排序?

时间:2011-01-12 02:27:13

标签: wordpress sorting post custom-fields

这里有一些Wordpress问题。老实说,我总是从零开始设计我的网站并从头开始“编码”。最近我一直在努力与WP合作,因为我听说过它很好。

看起来WP会免费提供许多东西(例如基于类别的动态“页面”)。但是,我想知道如何在不重新发明轮子的情况下操纵这些免费赠品。例如,我想让SUB-MENU显示一个帖子类别列表。但我想通过CUSTOM FIELD对这些类别进行排序。

现在,我可以重新发明轮子并手动创建(并链接到)每种类型的新页面,等等,(我从根本上不介意做)但是,我希望有一个通过插件或其他方式来解决这个问题。我已经看过几个关于自定义查询的教程,但是他们没有实现 - 他们只是简单地给出查询而没有确切地说明是创建新页面还是将其插入到某个函数中。

任何输入都将非常受欢迎。

最佳。

1 个答案:

答案 0 :(得分:1)

在主题根目录的category.php模板顶部,添加以下内容以将自定义排序字段添加到查询中:

<?php
function is_valid_custom_sort_field($field)
{
    // implementation left as an exercise for the questioner
    return true;
}
if ($_REQUEST['sort_custom_field'] && is_valid_custom_sort_field($_REQUEST['sort_custom_field'])) {
    query_posts($query_string . '&orderby='.$_REQUEST['sort_custom_field']);
}

请参阅: http://codex.wordpress.org/Function_Reference/query_posts

如果你的主题没有category.php,这里有一个基于它的简单默认模板(从包含的二十世纪主题中复制):

<?php
/**
 * The template for displaying Category Archive pages.
 */

get_header(); ?>

        <div id="container">
            <div id="content" role="main">

                <h1 class="page-title"><?php
                    printf( __( 'Category Archives: %s', 'twentyten' ), '<span>' . single_cat_title( '', false ) . '</span>' );
                ?></h1>
                <?php
                    $category_description = category_description();
                    if ( ! empty( $category_description ) )
                        echo '<div class="archive-meta">' . $category_description . '</div>';

                /* Run the loop for the category page to output the posts.
                 * If you want to overload this in a child theme then include a file
                 * called loop-category.php and that will be used instead.
                 */
                get_template_part( 'loop', 'category' );
                ?>

            </div><!-- #content -->
        </div><!-- #container -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>