无法按标题订购帖子

时间:2010-12-29 19:03:05

标签: php wordpress

无论我如何尝试或做什么,我都无法通过标题来命名我的帖子:

# Vars
global $post;

# Build
$args = array(
    'numberposts'     => -1,
    'category'        => 28,
    'orderby'         => 'title',
    'order'           => 'ASC',
    'post_type'       => 'post',
    'post_status'     => 'published' );

# Query
$tagposts = get_posts($args);

# Iterate
foreach($tagposts as $post) :

# Populate
setup_postdata($post);

# Show title, excerpt
echo '<tr><td>';
the_title();
echo '</td><td>';
the_excerpt();
echo '</td></tr>';

endforeach;

他们总是按我输入的顺序出来。我甚至无法通过日期来订购。

编辑:我在Windows上对MySQL运行3.0.3

我还应该注意,我正在搜索的类别是一个子类别。结果很好。

使用最新技术更新,但仍导致订单错误。

3 个答案:

答案 0 :(得分:1)

尝试:

//显示按标题按升序排列的帖子

<div class="post">

    <h1>Ordered by Post Title (Ascending)</h1>

    <?php foreach( $posts as $post ) : setup_postdata( $post ); ?>

        <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>

        <p><?php the_content(); ?></p>

    <?php endforeach; ?>

</div>

我没有使用过这个Codex,但看起来它也可以在这里使用。

 <?php get_posts( $args ); ?> 

    'orderby'         => 'title',

答案 1 :(得分:1)

我遇到了这个问题,它是由Post Types Order插件引起的。如果您使用的是这样的插件,它可能会覆盖查询中的任何自定义排序。

答案 2 :(得分:0)

这真的很奇怪,但我通过添加自定义过滤器解决了这个问题。删除所有当前过滤器没有任何效果......但这有效:

# Vars
global $post;

# Build
$args = array(
    'numberposts'     => -1,
    'category'        => 28,
    'post_type'       => 'post',
    'post_status'     => 'published' );

# Clear
add_filter('posts_orderby', 'post_title ASC' );

# Query
$tagposts = get_posts($args);

# Iterate
foreach($tagposts as $post) :

# Populate
setup_postdata($post);

# Show title, excerpt
echo '<tr><td>';
the_title();
echo '</td><td>';
the_excerpt();
echo '</td></tr>';

endforeach;

# Order
function title_alphabetical( $orderby )
{
  return $orderby;
}