但是原先存在着的大量《每周歌词》非常占用首页空间,让技术相关的文章都难以找寻,这就违背了这个博客的初衷了。...缺点很明显: 没办法跨页判断第一篇歌词,如果要跨页判断需要引入额外的数据库查询 每一页的文章数可能不同 侵入式修改,需要更改主题的index.php逻辑 后两点是无论如何都无法接受的,因此只能考虑其他方法...根据文档,找到了cat参数用来去除某个分类。...如果一定要用这个方法实现的话,就需要先进行一次查询找出所有非推荐、不是最后一篇的文章id,然后加入post__not_in参数来去除这些文章。...不过虽然这样代价可接受、功能也可实现,但是直接修改SQL还是不甚完美,而且这样也假设了首页获取文章是第一个进行的查询操作。
「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query 进行 WordPress 文章查询。...第五讲关于分页相关的参数,分页相关的参数比较多,先简单罗列一下: nopaging (boolean) – 如果为 true 则显示所有文章,false 则分页显示,默认为 false。...特别注意:设置偏移量参数会覆盖/忽略 paged 参数,并破坏分页,并且 "posts_per_page" 为-1(显示所有文章)时,offset 参数会被忽略。 paged (int) – 第几页。...); 从第4篇文章开始显示: $query = new WP_Query( array( 'offset' => 3 ) ); 每页显示5篇文章,然后偏移最近的三篇: $query = new WP_Query...page') 在页面模板中也能生效,那首先要设置该页为静态首页。
> 当然,使用哪种方法完全由个人习惯决定,不过我认为用数组更为方便,原因如下: 便于阅读,可以利用if语句更轻松地给数组添加条件,以动态生成查询一些查询参数(某些使用频率较低的参数,如分类参数和标签参数...)需要被传递数组你可以将函数调用以参数的形式传递 3....关于日志顺序 默认情况下WordPress日志是按日期顺序排列的,这也是大多数人的需求,不过如果能更改默认的排列顺序那就更好了。 例如你可以随意调用几篇日志,让它们显示在侧边栏。...实现文章置顶的标准操作是,将这些文章添加到所返回数据列表的开始部分。...例如,当你的网站首页显示了最新发表的日志后会继续显示分类,如果隐藏重复内容,分类下将隐藏已经显示的最新发表的日志, 从而让更多内容显示在主页上。
php // WP_Query 所使用的参数 $args = array( 'posts_per_page' => 3 ); // 调用 WP_Query 新建文章查询....> WP_Query 这个万能的文章查询类,有人把 WP_Query 所有的参数做了一个总结,然后注释了一下,供有需要的朋友查阅使用。 <?...//(整数) - 页数,分页时显示第几页 //注意:使用 get_query_var('page'); 如果查询在设置为首页的页面模版中工作,查询参数 'page' 拥有文章分页或内容中使用 从 1 到 31) 'hour' => 13, //(int) - 小时 (从 0 到 23)....'second' => 30, //(int) - 秒 (从 0 到 60). /** * 自定义字段参数 - 显示拥有某个自定义字段的文章 */ 'meta_key' => 'key', //(字符串
php // WP_Query 所使用的参数 $args = array( 'posts_per_page' => 3 ); // 调用 WP_Query 新建文章查询....> WP_Query 这个万能的文章查询类,有人把 WP_Query 所有的参数做了一个总结,方便后期开发查阅. <?...//(整数) - 页数,分页时显示第几页 //注意:使用 get_query_var('page'); 如果查询在设置为首页的页面模版中工作,查询参数 'page' 拥有文章分页或内容中使用 从 1 到 31) 'hour' => 13, //(int) - 小时 (从 0 到 23)....'second' => 30, //(int) - 秒 (从 0 到 60). /** * 自定义字段参数 - 显示拥有某个自定义字段的文章 */ 'meta_key' => 'key', //(字符串
禁止翻页屏蔽/防采集 add_filter('pre_get_posts','fanly_basic_query_posts'); function fanly_basic_query_posts($wp_query...别看上面代码行数多,其实 404 页面那整段可以直接使用跳转到首页,甚至直接使用 die 结束,我这里分享只是为了漂亮的结束为 404 页面而已。...如果为了更好的防止 WordPress 被采集,那么还可以针对 feed、站点地图 sitemap 等方面做屏蔽,因为 WordPress 的翻页都有 page 参数所以还可以服务器屏蔽路径的方式。.../防采集(自动版本) add_filter('pre_get_posts','fanly_basic_query_posts'); function fanly_basic_query_posts($wp_query...除非注明,否则均为泪雪博客原创文章,禁止任何形式转载 本文链接:https://zhangzifan.com/wordpress-prevent-acquisition.html
此漏洞最近被解决为 CVE-2022-21661 ( ZDI-22-220 )。该博客涵盖了该错误的根本原因,并着眼于 WordPress 团队如何选择解决它。...如果请求来自未经身份验证的用户,admin-ajax.php将调用未经身份验证的 Ajax 操作。...接下来,它调用get_sql方法,该方法最终调用get_sql_for_clause从用户提供的数据创建 SQL 语句的子句。...但是,如果分类参数为空且字段参数的值为字符串“term_taxonomy_id” ,则该方法无法验证术语参数。稍后在 SQL 语句中使用terms参数的值。...图 5 - wordpress/wp-includes/class-wp-tax-query.php 请注意,get_sql()返回的sql变量附加到 SQL SELECT 语句并使用从该方法返回的字符串进行组装
front-page.php 绝对首页 comments.php 评论 sidebar.php 侧边栏 single.php 文章内容页 singular.php 页面文章合一 page.php...php print($wp_query); ?...默认: [is_home] => 当前页是首页 阅读设置:为默认设置的时候 查询出最新的文章 自定义: [is_home] => 1 ,[is_page] => 1 阅读设置:为自定义页面的时候 查询出来是设置的页面...默认查询的总结 默认查询: $wp_query -> posts -> post 被查询对象:(wp_query查询出来的) get_queried_object() get_queried_object_id...get_the_category( int $id = false ) 函数参数: $id 整数型,默认值:当前文章的ID 指定文章的ID,将返回该文章所属分类的信息。 函数使用示例 <?
这是我碰到最多的需求了,博客首页的文章如何使用分类进行过滤,有些用户只想某几个分类的文章,而有些用户则不想显示某几个分类的文章。...如果懂代码,WordPress 的 WP_Query 支持 category__in 和 category__not_in 这两个参数,使用 pee_get_posts hook 处理一下就好了。...在 「WPJAM」 的「分类设置」子菜单下点击「首页分类」标签页,就一目了然: 并且还增强了一下,支持在多个平台下面的设置,比如你可以单独设置在小程序下的首页分类过滤,目前支持四个平台。...支持一键将文章中图片下载到 WordPress 媒体库 搜索优化 支持限制和关闭搜索的 WordPress 插件 编辑器优化 优化 WordPress 传统的 TinyMCE 编辑器 添加下划线等按钮...外部链接 将文章或评论中的外部链接加上安全提示的中间页。 让用户确认之后再跳转,并还支持添加 nofollow rel 属性。 话题标签 文章中插入 #话题标签#。
一、给所有文章添加自定义字段_commentTime如果你的博客文章比较少当然可以手动添加,但是有的博主文章成千上万。...所以这里我给出了两个批量添加方法 1.使用函数将代码添加到主题 functions.php文件中,刷新页面就可以自动为所有文章添加自定义字段。...center为自定义字段的名称,true为值,可根据情况修改。...)、有新评论的时候,自动添加/更新自定义字段_commentTime的值,不需要你手动添加更改。...$wp_query) global $wp_query;$args = array( 'meta_key' => '_commentTime', 'orderby' => 'meta_value_num
「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query 进行 WordPress 文章查询。...' ) ); 使用标签 ID 获取都打了标签 ID 为 37 和 47 的文章: $query = new WP_Query( array( 'tag__and' => array( 37, 47 )...) ); 使用标签 ID 获取只要打了标签 ID 为 37 或 47 的文章: $query = new WP_Query( array( 'tag__in' => array( 37, 47 ) )...三、真正的王炸:tax_query tax_query 参数是 WordPress 3.1 版本引进的,WordPress 非常复杂的多重筛选就是使用它实现的,我们将通过几个例子讲解怎么实现。...可能的值为「AND」,「OR」,如果只有一个分类参数数组,不要使用。
「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query 进行 WordPress 文章查询。...第八讲关于日期相关的参数,日期相关的参数可以让你获取特定时间和日期期间的文章,相关的参数比较多,首先基本的参数: year (int) – 四位数的年份(比如:2021)。...day (int) – 一个月中的第几天(从 1 到 31)。 hour (int) – 小时(从 0 到 23)。 minute (int) – 分钟(从 0 到 60)。...然后复杂的情况可以使用 date_query 数组参数,这个参数从 3.7 版本开始的, date_query 数组里面的字段参数: year (int) – 四位数的年份(比如:2021)。...参数被设置为 true,该日期也不会包含在查询中。
为什么要搬 原来的博客系统使用的是Typecho,一个轻量、高效、快速的博客系统(至今也是)。...怎么搬的 从Typecho导出 非常简单 使用ByeTyp插件将原博客数据导出为WordPress可识别的xml格式 使用Tp2MD插件导出Markdown格式的文章 GitHub sunxiyuan...//设置WP_Query的 'no_found_rows' 属性为true,禁用SQL_CALC_FOUND_ROWS if ( !...function_exists( 'set_no_found_rows' ) ) { function set_no_found_rows(\WP_Query $wp_query) {...以本博客为例,在Blackfire中可以看到,apply_filters函数被调用了近600次,耗费了200ms时间,但是很不幸,目前没有办法解决,只能希望WordPress在后续版本中优化性能。
另一方面,get_posts()默认情况下的查询,参数 suppress_filters设置为 true.。...使用WP_Query类 在我看来,这是从数据库中检索帖子的最佳方式。它不会更改主查询,它以其标准方式执行,就像任何其他WordPress查询一样。...为了实现这一点,我们使用posts_per_page参数。 WordPress允许我们将-1表示为该参数的合理值,在这种情况下,系统将尝试获取满足定义条件的所有帖子。...添加这两个参数将禁用这些功能并加快查询速度: $query = new WP_Query( array( 'ignore_sticky_posts' => true, 'no_found_rows'...最后,我们将一个重型数据库查询(使用WP_Query元键)更改为简单直接的查询(调用get_post()),这是一个更好和更有效的方法。
「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query 进行 WordPress 文章查询。...第六讲关于排序相关的参数,排序相关的参数就是 order 和 orderby 两个参数,但是值比较多比较多: 首先是 order 参数,数据类型为:(string | array),用于指定 “orderby...” 参数的升序或降序,默认为”DESC”,即为降序,如果是数组的话,可用于多个 order/orderby 集: ASC – 升序,从最低值到最高值 (1, 2, 3; a, b, c) DESC –...降序,从最高值到最低值 (3, 2, 1; c, b, a) 然后是 orderby 参数,数据类型为:(string | array),按参数对检索到的文章进行排序。...( $args ); 获取 my_custom_post_type 的文章,按照数字自定义字段 age 排序,并通过 meta_query 过滤数据只显示 age 为:3-4 的数据 $args = array
几种写法,有用到query_post的,有用到WP_Query,也有用到is_sticky(),下面随ytkah一起来看看吧 第一种调用置顶文章的方法,用到query_post,代码如下 参数用一个数组的形式放在$query_post中,关键的参数为'post__in' =>get_option('sticky_posts')和'caller_get_posts' => 0。...> 第二种写法用到WP_Query,和第一种方法有点类似,代码如下 <?...有两个常用的函数 is_sticky():判断文章是否是置顶的,是就返回true,不是就返回false get_option('sticky_posts'): 获取置顶文章ID,返回包含各置顶文章ID的数组 首页展示文章时...参考资料https://developer.wordpress.org/reference/classes/wp_query/
WordPress 安装 Memcached 之后,WordPress 的文章页,基本上可以做到 0 SQL 请求,但是首页或者其他列表页总是有两条 SQL 请求,怎么优化呢?...如何缓存 WordPress 主循环 首先在 posts_pre_query filter 基于查询参数 query_vars 创建缓存的 cacke_key。...add_filter('posts_pre_query', function ($pre, $wp_query){ if(!...wp_cache_get_last_changed 函数,它使用来存储一类 cache_group 最后的修改时间,WordPress 文章使用的 cache_group 是 比如下面这段代码就可以获取 cache_group 为...query_vars)).':'.wp_cache_get_last_changed('posts'); WPJAM Basic 插件已经集成了 Memcached,下载 WPJAM Basic 之后,将
「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query 进行 WordPress 文章查询。...$query = new WP_Query( array( 's' => 'keyword' ) ); 在搜索关键词前面加上连字符将排除与关键词匹配的文章,例如 "pillow -sofa" 将返回包含...评论参数 可以根据评论数来获取文章,支持数字和数组: comment_count (int) – 获取评论数必须是该数字的文章,相当于下面比较参数为:=。...comment_count (Array) – 如果该参数为数组,则其必须有两个参数: value – 用于比较的评论数。 compare – 比较方式,可以是:'=', '!...显示评论数为20的文章: $args = array( 'post_type' => 'post', 'comment_count' => 20, ); $query = new WP_Query
找到输出翻页的代码 一般在主题的index.php(首页模板)中,可能是the_posts_navigation()函数,也可能是主题的自定义函数,这些函数的名字里通常带有the_posts_navigation...if ( $GLOBALS['wp_query']->max_num_pages > 1 ) { $args = wp_parse_args( $args, array(...Default is the value WP_Query's max_num_pages or 1. 'current' (int) The current page number....class="prev', '<a class="prev', $pagination); echo $pagination; __()是个翻译函数,从文本域中获取翻译后的内容...,不过我直接改了第一个参数,而不是对应的翻译,不管了。
在wordpress提供的类中,发现WP提供的查询DB的类中有SQL Injection错误:WP_Query 分析 在 5.8.3 版本中,wordpress 已经修复了这个错误,比较提交更改可以在处理变量之前...阅读该函数的代码会发现该函数的工作是为 SQL 查询中的条件创建子句,具体而言,它的工作是处理接收到的数据,将这些数据组合成 SQL 查询中的条件。将其返回给父函数。...该函数transform_query将检查query['field'] == resulting_field,如果为真,则返回并且不做进一步处理,所以如果变量query['field']是term_taxonomy_id...WP_Query当您要查询数据库时,插件/主题将调用该类,从源代码中了解错误的方法是在您使用它时,WP_Query(data)并且 data 是您可以控制的。...例如 new WP_Query(json_decode($_POST['query_vars'])) 有效载荷将采用以下形式: query_vars={"tax_query":{"0":{"field"
领取专属 10元无门槛券
手把手带您无忧上云