业务背景 默认情况下只有当单个bucket承载的object数量过多,导致omap过大才会要做reshard,所以理论上reshard操作比较少,但是在开启了Multisite的情况下,一旦对bucket...进行了reshard操作,则会破坏原有的元数据对应规则,导致对应的bucket无法进行数据同步,官方从L版本的12.2.8开始才有了如何在Multisite场景下的reshard修复方案。...值得注意的是开启了Multisite的环境千万不要开auto reshard。 注意事项 bucket reshard是非常耗时耗资源的一项操作,生产上应该尽量避免。...一旦你决定要在Multisite下面进行reshard,并且要修复对应bucket的数据同步功能,则意味着你要停掉整个集群的RGW服务,因此进行整个修复操作之前务必知道这样做的风险,避免造成重大损失。...操作流程 查看主从集群的同步状态,确保对应bucket已经完成数据同步,建议停掉对应bucket的数据写入并等待同步完成。
每个项目的需求都不一样,比如最近ytkah的客户提出如果wordpress分类只有一篇文章则直接跳转到文章页,这个实现起来不会很麻烦,几行代码就能搞定,下面就来一起看看吧。...打开主题的function.php文件,添加如下代码 function category_jump_page() { //定义函数 if(is_category()) { //判断是否是分类列表页面...global $wp_query; //定义全局变量 if ($wp_query->post_count == 1) { //判断文章数量是否是1... 当然,wordpress的搜索结果也可以这样设置 function category_jump_page() { //定义函数 if(is_category() || is_search(...)) { //判断是否是分类列表页面或搜索结果页 global $wp_query; //定义全局变量 if ($wp_query->post_count == 1) {
WP_Query 是 WordPress 的核心,它支持的参数非常灵活,也非常多,官方的文档也略嫌啰嗦,整理把所有的参数都整理了一遍,以后要使用 WP_Query 只要看这份文档就够了: $args =...The default WP_Query sets 'post_status'=>'published', but atchments default to 'post_status'=>'inherit
自定义的 Post Type 的内容不会自动混入主循环里面。那如何让自定义 Post Type 的内容显示出来?...array( 'post', 'the_custom_pt' ) ); } } add_action( 'pre_get_posts', 'add_custom_pt' ); 将上面的代码加入到主题function.php...文件中 第二步,上面操作依赖模板,如果需要高度自定义或者在页面的某个模块中调用列表,就需要用到 WP_Query 类来调用: 'product'); $loop = new WP_Query...> 新建archive-product.php模板放在主题目录,这个是product的post_type模板,将上面的代码加入到archive-product.php中进行调用文章,刷新缓存就可以看到了
WordPress 中有一个“多站点”模式(multisite),即通过一个WordPress 程序管理多个站点。其默认是不开启的,如果你开启了但又想恢复为原来的“单站点”模式,该如何做?...(注意:本文不会说明如何开启WordPress 的“多站点”模式,若不知,请自行搜索。) 步骤如下: 1、备份网站数据!...(安全第一,有备无患); 2、通过ftp 或者在线修改 或者 下载修改又上传 等方式对WordPress 安装根目录下的 wp-config.php 进行操作; 3、删除下的代码: define( 'MULTISITE...ture 改为 false; define('WP_ALLOW_MULTISITE', true); 5、新建或者修改根目录下的 .htaccess 文件,添加以下代码: RewriteEngine...(.*\.php)$ $2 [L] RewriteRule . index.php [L] 6、通过 phpMyAdmin 或其他方式删除数据库中以下的表(table): wp_blogs wp_blog_versions
这个操作发生在构造查询对象后、解析查询对象(WP_Query)前,所以可以对查询对象进行修改。而且由于这是一个Hook,因此不会对主题代码有任何的侵入,相对可控。...WP_Query的筛选条件之间都是“与”关系,根本没办法单独保留一篇文章。...所以我去阅读了WP_Query的源码,发现在语句拼接结束后其实还有一些Hook点。...后记 最后我选择了尝试3提到的方法,虽然还是有一些缺点,但是起码保证了功能和效率。同时也顺便用Code Snippets插件统一管理了现有的Patch代码,不用再改主题的function.php了。...不愧是我,这都能水一篇 Reference WP_Query文档:https://developer.wordpress.org/reference/classes/wp_query/
要说到搜索,其实Wordpress的搜索功能是很完善的,包括相关性,标题和内容,只要内容充分,是绝对可以通过关键词触及到想要的内容的。...可一旦文章数目有限一些尴尬的情况便会诞生,比如说只搜索到一篇文章的时候Wordpress默认不会直接打开,而是需要用户来二次点击,再这样追求高效的时代里,很明显已经落伍了!...需加改善~ 复制代码至主题的function.php文件中 /**Wordpress检索到一篇文章直接打开优化**/ add_action('template_redirect', 'mecrr_redirect_single_post...'); function mecrr_redirect_single_post() { if (is_search()) { global $wp_query;...1) { wp_redirect( get_permalink( $wp_query->posts['0']->ID ) ); } } } 清除PHP的缓存
打开主题目录的function.php文件,在合适的位置添加如下代码 add_filter( 'posts_search', 'ytkah_search_by_title', 10, 2 ); function...ytkah_search_by_title( $search, $wp_query ) { if ( !...这个方法同样适用于前端的站内搜索,感兴趣的小伙伴可以试试
前面罗列过 WP_Query 的所有参数,今天研究 WP_Query 的缓存,把所有相关的缓存参数都翻了一遍,做一下简单笔记。...WP_Query 主要用4个用于缓存相关的参数和使用到函数有: cache_results 是否缓存查询的文章信息。...update_post_term_cache 开启之后,在列表页使用 get_the_terms 函数的时候,不需要导数据里面去请求每个 post 的各种 taxonomy 的 term 的信息,它会把整个列表所有文章的所有...update_post_meta_cache 开启之后,在列表页使用 get_post_meta 函数的时候,不需要导数据里面去请求每个 post_id 的 post meta 的信息,它会把整个列表所有文章的...如果为 true 的话,WP_Query 会把列表页所有的 term_ids 临时存储下来,在当前页第一次使用 get_term_meta 函数的时候,把 term_ids 的所有 term_meta
避免使用 SQL_CALC_FOUND_ROWS (可选) 在数据量大时,这条命令会非常慢,所以我们将其重写,在主题function.php或者Code Snippets中增加以下代码。...//设置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) {...function_exists( 'set_found_posts' ) ) { function set_found_posts($clauses, \WP_Query $wp_query)...以本博客为例,在Blackfire中可以看到,apply_filters函数被调用了近600次,耗费了200ms时间,但是很不幸,目前没有办法解决,只能希望WordPress在后续版本中优化性能。
> 两段代码是等效的,为了保持代码的简洁性,WordPress 隐藏了全局的主循环变量 $wp_query。 WP_Query最基础用法 <?...php // WP_Query 所使用的参数 $args = array( 'posts_per_page' => 3 ); // 调用 WP_Query 新建文章查询....> WP_Query 这个万能的文章查询类,有人把 WP_Query 所有的参数做了一个总结,方便后期开发查阅. 的版本中可用). 同时需要注意'meta_key=keyname' 也要在查询中声明。...在返回文章的开头忽略/排除置顶文章,但是置顶文章还是会在自然查询中列出。
WP_Query 的 orderby 参数用于告诉获取的 Posts 是基于哪列进行排序的,默认是 post_date,并且 WP_Query 的默认排序顺序是降序,就是最新发布的日志排在前面。...WP_Query 的 orderby 基本用法 $q = new WP_Query( array( 'orderby' => 'post_title' ) ); 或者: $q = new WP_Query...( array( 'orderby' => 'title' ) ); 这两段代码都会生成如下的 SQL: ORDER BY post_title DESC WP_Query 的 orderby 高级用法...所以到 4.0,WordPress 修正了这个问题,如果你输入用空格分开的多列,每个列后面都会加入排序顺序,并且 4.0 还可以让你控制每列的排序顺序,我们可以通过传递一个数组给 WP_Query 的...) ); 生成的 SQL: ORDER BY post_title DESC, menu_order ASC 更详细用法可以参考:WP_Query 累的 parse_order() 方法。
color: rgba(255, 255, 255, 0.80); letter-spacing: .5px; font-family: Arial; } /*底部统计美化结束*/ 插入子主题function.php...suppress_filters' => true, 'fields'=>'ids', 'posts_per_page'=>-1 ); $query = new WP_Query...暖岛整理 www.nuandao.cn */ function nd_get_24h_post_count(){ $today = getdate(); $query = new WP_Query...$today["mday"]); $postsNumber = $query->found_posts; return $postsNumber; } /*底部统计结束*/ 用到的一张图片,自行上传...如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
我们在使用 WP_Query 或者 query_posts 进行日志查询的时候,WordPress 都会产生很多 SQL_CALC_FOUND_ROWS 的 SQL 查询。...一般来说这类 SQL 查询,数据库是不会进行缓存,我前面也说了 别使用 MySQL 的 SQL_CALC_FOUND_ROWS 来获取总行数,因为慢。...WP_Query 和 query_posts 其实提供了 no_found_rows 参数可以阻止进行这类的 SQL 查询,比如: query_posts('no_found_rows=true&cat
在 WordPress 中,使用 WP_Query 进行文章查询是最常见的操作,学习好这方面的操作, WordPress 开发基本就学会了一半。...「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query 进行 WordPress 文章查询。...第13讲关于 WP_Query 类的所有属性: query保存由 WP 类传递给 wp_query 对象的查询字符串。...query_vars包含 query 解析之后的关联数组,即一个由查询变量和其对应值组成的数组。...queried_object_id和 queried_object 一样,这里则保存对应的 ID。 $posts 使用从数据库中获取的文章信息填充。 $post_count 显示的文章数量。
管理员邮箱」:可填写专属邮箱(如英文站管理员),也可共用主站超级管理员邮箱;点击「添加站点」,重复此步骤创建其他语言站(如法语站fr、西班牙语站es);创建完成后,在「网络管理→站点」中可看到所有语言站...;将切换器添加到前台:外观→小工具,将「MultisiteLanguageSwitcher」拖到侧边栏/页脚,或在外观→菜单中添加到导航菜单,完成全局展示。...八、步骤7:关键SEO优化(避免搜索引擎收录混乱)Multisite多语言站的SEO核心是告诉搜索引擎“各语言站是同一网站的不同版本,而非独立站点”,避免重复收录、权重分散,核心操作是配置hreflang...,子域名结构需将所有子域名添加到CDN解析中,确保各语言站加载速度一致。...Multisite的备份插件(如UpdraftPlus),进行「全网备份」或「单站单独备份」;避免安装不支持Multisite的插件(插件详情页会标注「CompatiblewithMultisite」)
在 WordPress 中,使用 WP_Query 进行文章查询是最常见的操作,学习好这方面的操作, WordPress 开发基本就学会了一半。...第一讲,把 WP_Query 最常用的分类,标签和分类模的所有相关的参数讲解一下,例子也是来自官方文档,学完之后,你可以在 WordPress 进行非常复杂的多重筛选。...)的文章: $query = new WP_Query( array( 'category_name' => 'php' ) ); 使用分类 ID 获取含有某个分类(不含该分类下的所有子分类)的文章:...=> array( 103, 115, 206 ), 'operator' => 'NOT IN', ), ), )); 获取在 quotes 分类中的文章或者有...比如:获取在 quotes 分类中或者同时有 quote 文章格式和在 wisdom 分类中的文章: $query = new WP_Query(array( 'post_type' => 'post
'wp-load.php'); 引入 WordPress 核心代码,然后执行 WP_Query 获取特定的日志,然后就发生下面的错误: Fatal error: Call to a member function...wp_query 是在 wp-setting.php 中定义的,因为是定义在最外层,所以 wp_query 自然就是一个全局的变量。...但是这里在自己的函数中通过 require(BASE_PATH ....'wp-load.php'); 引入 WordPress 核心代码,wp_query 反而变成这个函数中的本地变量,所以其他代码调用 wp_query 的时候,就发生了错误。...'wp-load.php'); 代码上面加入以下代码,预先将 $wp_query 定义为全局变量: define('WP_USE_THEMES', false); global $wp, $wp_query
思路 总体上需要实现的是两部分内容,一个前后文章的链接按钮,一个目录的弹出框。...我仔细看了下Genesis Sample的demo示例中貌似是没有自带这个效果的,所以这个需要自己实现一下。方法挺多,用纯CSS也可以,用jQuery也可以,用Vue.js也可以。...最笨的办法就是直接写死。。。但那样也太傻了。一开始走了点弯路,什么异步获取,什么写WP_Query。...第一步 前后文章的链接 Genesis框架里面其实已经包含了这个功能,要在文章中自动插入前后文章的链接,只需要在子主题的function.php中加入一句: ?...TRUE可以让前后文章的链接限定在同一个目录中。 这样就已经基本实现了前面几个需求了,虽然有点丑,但是先不管它,效果如下: ?
在 WordPress 中,使用 WP_Query 进行文章查询是最常见的操作,学习好这方面的操作, WordPress 开发基本就学会了一半。...使用作者 ID 获取某个作者的文章: $query = new WP_Query( array( 'author' => 123 ) ); 使用作者 'user_nicename' 获取某个作者的文章:...$query = new WP_Query( array( 'author_name' => 'denis' ) ); 使用作者 ID 获取某一批作者的文章: $query = new WP_Query...( array( 'author' => '2,6,17,38' ) ); 不显示某一个作者的文章,通过在他的 ID 前使用 -(减号): $query = new WP_Query( array( '...) ); 使用作者 ID 获取排除某一批作者的文章: $query = new WP_Query( array( 'author__not_in' => array( 2, 6 ) ) );