gpt4 book ai didi

php - 根据父类别排序 Wordpress 帖子

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:48:19 25 4
gpt4 key购买 nike

更新:我尝试使用以下代码:

<?php if (is_category(events)) { 
$posts = query_posts($query_string . '&orderby=event_date&order=desc');
} else {
$posts = query_posts($query_string . '&orderby=title&order=asc');
}
?>

为什么那行不通有什么原因吗?它似乎可以很好地按字母顺序组织帖子,但在“事件”中的日期顺序上仍然没有运气。

--

在搜索了各种现有问题后,我无法完全找到我正在尝试做的事情的解决方案。

目前我网站上的所有帖子都是按字母顺序排列的,这很好,除了我添加的一个新类别。对于此类别,我想按我在自定义字段中输入的值对所有帖子进行排序。该字段称为“event_date” - 所以我想基本上按日期排序帖子,而不是帖子的创建日期,即用户手动输入此字段的日期。

我设法通过使用让它工作:

<?php if (is_category($events)) { $posts = query_posts($query_string . '&orderby=$event_date&order=asc'); } ?>

然而,这会覆盖所有其他页面的非字母顺序。

对于我使用的字母顺序:

<?php if (is_category()) { $posts = query_posts( $query_string . '&orderby=title&order=asc' ); } ?>

基本上我想要一个声明,告诉页面按字母顺序排列所有帖子,除非类别是“事件”,我想在自定义事件日期之前对它们进行排序。

正如您可能会说的那样,我非常擅长前端,而不是后端,所以其中很多内容对我来说都是全新的,因此非常感谢任何帮助或建议。

最佳答案

要按自定义字段值对帖子进行排序,您需要将自定义元字段添加到查询本身。除了 meta_key=metafieldid 之外,orderby=meta_value 将允许以这种方式进行排序。

我会使用 pre_get_posts hook如果 get_query_var( "cat")(或类似的查询变量)返回所需的帖子类别,则修改查询对象。

add_action( "pre_get_posts", "custom_event_post_order" );

function custom_event_post_order( $query )
{
$queried_category = $query -> get_query_var( "cat" );

/*
* If the query in question is the template's main query and
* the category ID matches. You can remove the "is_main_query()"
* check if you need to have every single query overridden on
* a page (e.g. secondary queries, internal queries, etc.).
*/
if ( $query -> is_main_query() && $queried_category == 123 )
{
$query -> set( "meta_key", "event_date" ); // Your custom field ID.
$query -> set( "orderby", "meta_value" ); // Or "meta_value_num".
$query -> set( "order", "ASC" ); // Or "DESC".
}
}

请记住,此方法会覆盖所有使用相关类别的查询。您可以构建使用自己的参数构建循环的自定义 WP_Query 对象。

您还应该标准化将自定义字段数据保存到数据库的方式。对于日期,我更喜欢使用易于移动和操作的 UNIX 时间戳格式的时间。这样查询时就不会发生意外,并且某些数据会以与其余数据不同的方式进行格式化。

免责声明:我没有时间实际测试上面的代码,但总体思路应该可以正常工作。

编辑:当然,上面的代码应该插入到 functions.php 或类似的通用函数文件中。

关于php - 根据父类别排序 Wordpress 帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12321611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com