php - 通过不在 WordPress 帖子循环中工作来订购
问题描述
我希望我的产品按特定项目订购,但是当我添加订单查询时,产品不再显示在页面上。
这是我正在使用的查询:
<?php query_posts($query_string . '&orderby=title&order=ASC');?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); global $product; ?>
<div class="col-md-4 mt-5 mb-5">
<a href="<?php echo get_permalink( $loop->post->ID ) ?>" class="d-block w-100">
<div class="image-wrapper">
<img src="<?php the_post_thumbnail_url(); ?>" class="img-fluid head-image d-block mx-auto">
<?php if( $product->is_on_sale() ) { ?>
<div class="image-content">
<div class="sale">
<?php get_template_part('template-parts/part', 'sale'); ?>
</div>
</div>
<?php } ?>
</div>
</a>
</div>
<?php endwhile; else: endif; ?>
当我删除第一行时<?php query_posts($query_string . '&orderby=title&order=ASC');?>
,产品显示但未订购。
有谁知道出了什么问题?
解决方案
在 stackexchange 上有一篇关于 wp_query 与 query_posts 的精彩文章(https://wordpress.stackexchange.com/questions/1753/when-should-you-use-wp-query-vs-query-posts-vs-get-posts)。
也许你可以考虑
$args = array( /* your args: refer to wp_query() for requirements */
$query = new WP_Query($args);
抱歉,我正在使用手机,无法提供更好的示例。但是 wp_query 是一个更受欢迎的选项,如前所述:
query_posts() 过于简单化,并且通过将其替换为查询的新实例来修改页面的主查询是一种有问题的方法。它效率低下(重新运行 SQL 查询)并且在某些情况下会彻底失败(尤其是在处理帖子分页时)。为此,任何现代 WP 代码都应该使用更可靠的方法,例如使用 pre_get_posts 挂钩。TL;DR 永远不要使用 query_posts()。
get_posts() 在用法上非常相似并且接受相同的参数(有一些细微差别,比如不同的默认值),但返回一个帖子数组,不修改全局变量并且在任何地方都可以安全使用。
WP_Query 是在幕后为两者提供支持的类,但您也可以创建和使用您自己的实例。稍微复杂一点,限制更少,在任何地方都可以安全使用。
推荐阅读
- javascript - 测试特定的数字序列是否在整数javascript中
- python - 如何在另一个矩阵中间插入一个矩阵
- r - R中是否有一个函数可以在时间记录中断之前读取最后30秒的时间?
- drools - 用于drools业务中心工作台的Nginx反向代理
- firebase - 如何从 Firebase 实时数据库中获取数据并使用 Flutter 将其放入列表中?
- webpack - 我在 Webpack 中收到 .css 模块解析失败错误,即使我已经在 module.rules 中有一个 css-loader
- python - Pandas Groupby 除了列并取该列的第一个值
- python - 有没有办法恢复 anaconda3 包含文件?
- python - Python Selenium:如何返回给定 URL 的所有 XPath 列表
- html - HTML:如何使用页面中文本的内部链接?