其中 meta_id 只是一行记录唯一的ID, post_id 表示该记录属于哪一篇文章, meta_key 为元信息的名称, meta_value 为元信息的值。...我们需要给文章存储 latitude 和 longitude 这两个信息,首先我们需要知道,我们文章的 post_id 是多少,这是可以从 wp_posts 数据表中获取的。...,查询时也要牵扯到两个表的结合,会拖慢数据库的执行效率。...其次是类型检查,一般情况下,表中每一列都有其数据类型,在向表中插入数据时,SQL会依据数据类型对其进行检查,如果采用上面的方式,那么 meta_value 只能为字符串类型,这样从某种程度降低了数据的可靠程度...最后是数据库结构检查,一般情况下,我们可以利用 NOT NULL 来规定某一列必须有一个值,而使用上面提到的方式,就必须由Web应用程序来进行这样的检查了。
from_weixin 百度未收录,但属于重复内容页面,所以不添加 已收录、未收录的判断,关注张戈博客的朋友肯定记得我之前在博客分享过百度是否收录的插件和代码吧!...当页面未被百度收录,且被访问的页面地址等于 WordPress 唯一页面地址时,将会输出百度自动推送 js 代码,不符合条件的页面则不会输出。...三、其他说明 和以前分享的百度是否收录代码一样的工作原理,文章加载时,会在百度搜索当前文章的 url 地址,如果百度未收录,查询结果中会匹配到【没有找到该 URL。...当代码确认页面已收录时,将会在文章中添加一个值为 1 的 baidu_record 自定义栏目。 只有当 baidu_record 这个自定义栏目的值不存在时,代码才会去百度查询收录结果。...并且在确认未收录之后,才会在网页 footer 中输出自动推送 js 代码。 这样就规避了已收录页面重复推送和百度实时查询导致加载慢两个问题!
在开发过程中,数据是必不可少的,数据库也是应运而生了,数据和数据库这两个兄弟是缺一不可的 首先我们要使用,pymongo,必须要安装 mongodb 数据库,小编已经找到网址了,可以直接下载对应桌面的程序...获取单个文档 find_one() 在MongoDB中可以执行的最基本的查询类型是 find_one()。此方法返回与查询匹配的单个文档(或者None如果不匹配)。...当您知道只有一个匹配的文档或仅对第一个匹配感兴趣时,此功能很有用。...Web应用程序中的常见任务是从请求URL获取ObjectId并找到匹配的文档。...在此示例中,我们将演示如何在键上创建唯一索引,该键将拒绝索引中已存在该键值的文档。
这两个都是具有顶级流量的,后端肯定有复杂的架构,我们今天只谈大众化的方案。...查询文章的点赞用户 select user_id from star where post_id=? 点赞数量可以通过定时异步统计更新到post和user 表中。...数据量不大的时候,这种设计基本可以满足需求了, 缺点: 数据量大时,一张表在查询时压力巨大,需要分表,而不论用post_id还是user_id来hash分表都与我们的需求有冲突,唯一的办法就是做两个表冗余...下面说下redis作为storage的方案: 场景a :显示点赞数量 在点赞的地方,只是显示一个点赞数量,能区分用户是否点赞过,一般用户不关心这个列表,这个场景只要一个数字就可以了,当数量比较大时,一般显示为...前几天写的一篇文章,受到众多同行的热情回复,能和众多同行一起交流,深感荣幸!对于工程类问题,没有标准的方案,一千个人有一千个方案,哪个最适合你只有你自己知道!期待你更好的思路和方法。
创建临时隐藏表单,为了安全 wp_nonce_field( 'product_director_meta_box', 'product_director_meta_box_nonce' ); // 获取之前存储的值...' );//在保存文章时,执行回调函数function product_director_save_meta_box($post_id){//回调函数,显示表单,用于新建和编辑显示表单 // 安全检查... // 检查是否发送了一次性隐藏表单内容(判断是否为第三者模拟提交) if ( ! ...isset( $_POST['product_director_meta_box_nonce'] ) ) {//安全判断 return; } // 判断隐藏表单的值与之前是否相同...创建临时隐藏表单,为了安全 wp_nonce_field( 'product_director_meta_box', 'product_director_meta_box_nonce' ); // 获取之前存储的值
-f78072bfcf61.png] [415f0964-04b3-45b8-a42c-42f5c2bf9098.png] 这两个都是具有顶级流量的,后端肯定有复杂的架构,我们今天只谈大众化的方案。...查询文章的点赞用户 select user_id from star where post_id=? 点赞数量可以通过定时异步统计更新到post和user 表中。...缺点: 数据量大时,一张表在查询时压力巨大,需要分表,而不论用post_id还是user_id来hash分表都与我们的需求有冲突,唯一的办法就是做两个表冗余。...下面说下redis作为storage的方案: 场景a :显示点赞数量 在点赞的地方,只是显示一个点赞数量,能区分用户是否点赞过,一般用户不关心这个列表,这个场景只要一个数字就可以了,当数量比较大时,一般显示为...写在最后:把问题写明白,真不是一件容易的事情,请大家多多关注,留言,谢谢! 前几天写的一篇文章,受到众多同行的热情回复,能和众多同行一起交流,深感荣幸!
功能名称:给 WordPress 添加百度是否收录的查询与显示 原版特性:通过 curl 在百度查询本页 url 并获取结果,如果存在就输出已收录,否则就是未收录,并且可点击提交 url 原版缺点:每次打开页面都需要在百度查询一遍...通过 curl 在百度查询 url 收录结果,如果已收录就将结果写入到文章的 post meta 记录中。...待下一次再次打开页面时,先检查文章自定义栏目字段来判断是否已收录,若已收录则直接输出,而不再执行 curl 查询,从而解决了 curl 实时查询拖慢速度的问题! ii....管理员可以随时在后台文章编辑界面中的自定义栏目来修改是否已收录的结果,自定义名称为 baidu_record,1 为已收录,0 为未收录。...不折腾,做网站干啥,不 root,你买安卓干啥,不越狱你买爱疯干啥。。。。。
action 列的类型是 ENUM, 可能的值为 ('view', 'like', 'reaction', 'comment', 'report', 'share')。...extra 列拥有一些可选信息, 例如:报告理由(a reason for report)或反应类型(a type of reaction)等。...| int | | remove_date | date | +---------------+---------+ 这张表的主键是 post_id。...这张表的每一行表示一个被移除的帖子, 原因可能是由于被举报或被管理员审查。 编写一段 SQL 来查找:在被报告为垃圾广告的帖子中,被移除的帖子的每日平均占比,四舍五入到小数点后 2 位。...其余几天没有收到垃圾广告的举报,因此平均值为:(50 + 100) / 2 = 75% 注意,输出仅需要一个平均值即可,我们并不关注移除操作的日期。
wordpress主题制作中可能需要单独调用指定文章的标题、链接或内容等,可以通过get_post()函数指定文章ID来获取文章标题、文章内容、文章链接、时间等文章相关信息。...默认值为空。 $output:需要返回的参数,可选参数。...php // 获取文章ID编号为10的标题名称,返回字段关联数组数据格式 $post_id = 100; $post = get_post($post_id, ARRAY_A);...动作钩子: publish_post:参数一个($post_ID),点击发布文章时就会被触发,仅含已发布;(推荐) save_post:参数一个($post_ID),发布或更新文章时就会被触发,包含已发布...、定时未发布; edit_post:参数两个($post_ID, $post),只要编辑已经存在的文章就会被触发; publish_future_post:参数一个($post_ID),到定时发布文章设定的时间点就会被触发
可以看到在register_rest_route中对路由进行了正则限制: ? 也就是防止攻击者恶意构造ID值,但是我们可以发现$_GET和$_POST值优先于路由正则表达式生成的值: ?...可以看到,此函数通过检查文章是否实际存在,以及我们的用户是否有权限编辑这边文章来验证请求。...但是当我们发送一个没有响应文章的ID时,就可以通过权限检查,并允许继续执行对update_item方法的请求。...从代码中可以看出,它是用wp_posts中的get_instance静态方法来获取文章的,跟进wp_posts类,位于/wp-includes/class-wp-post.php中: public static...而PHP类型转换的时候回出现这样的情况: ? 所以,也就是说,当攻击者发起/wp-json/wp/v2/posts/1?id=1hhh请求时,便是发起了对ID为1的文章的请求。
将经常被访问的数据(如数据库查询结果、热门文章内容等)存储在 Redis 中,下次请求时直接从 Redis 中获取,减少对后端数据源(如数据库)的访问压力,提升系统整体性能。...每一条朋友圈动态会对应一个唯一的标识(比如动态的 ID),以这个标识为基础构建一个特定的键(key),例如post:{post_id}:likes(这里post_id是具体朋友圈动态的编号),而这个键对应的值...同样以动态的 ID 构建一个集合的键,如post:{post_id}:liked_users,将点赞用户的唯一标识(比如用户 ID)添加到这个集合中。...利用集合的特性,可以方便地判断某个用户是否已经点赞(通过SISMEMBER命令查看元素是否在集合中),也能方便地统计点赞用户的数量(通过SCARD命令获取集合元素个数)等操作。...例如,把一个元素经过哈希函数计算后对应到 Redis 字符串表示的位数组中的第 10 位,若要添加该元素到布隆过滤器,就可以使用SETBIT命令将这个第 10 位的比特位设置为 1;当要判断元素是否存在时
(UPSERT) 考虑这个users具有唯一username列的表: Schema :: create ( 'users' , function ( Blueprint $ table ) {...第二个参数是唯一标识记录的列。除 SQL Server 外的所有数据库都要求这些列具有PRIMARY或UNIQUE索引。 提供要更新的列作为第三个参数(可选)。默认情况下,将更新所有列。...], [ 'username' => 'bar' , 'created_at' => now (), 'updated_at' => now ()], ]); SQL Server 需要带有唯一标识记录的列的第二个参数...upsert()还将添加updated_at到更新的列中。...当然了还是有一些注意点和坑,下面分享一下 注意的问题 要根据需求添加唯一索引 根据官方文档中的说明,我们的model中必须添加这行代码,才能以Eloquent的方式用 use \Staudenmeir\
,先从覆盖索引中获取 100010 个 id,再丢充掉前 100000 条 id,保留最后 10 个 id 即可,丢掉 100000 条 id 不是什么大的开销,所以这样可以显著提升性能 二、 利用 LIMIT...五、 简单字符串表达式 模型字符串可以使用 _ 时, 尽可能避免使用 %, 假设某一列上为 char(5) 不推荐 SELECT first_name, last_name,...,聚簇索引叶子节点上存有主键值+整行数据,非聚簇索叶子节点上则存有辅助索引的列值 + 主键值,如下 ?...所以就算对 COUNT(*) 使用主键查找,由于每次取出主键索引的叶子节点时,取的是一整行的数据,效率必然不高,但是非聚簇索引叶子节点只存储了「列值 + 主键值」,这也启发我们可以用非聚簇索引来优化,假设表有一列叫...十一、 批量插入,速度更快 当需要插入数据时,批量插入比逐条插入性能更高 推荐用 -- 批量插入 INSERT INTO TABLE (id, user_id, title) VALUES (1, 2,
,最好的做法不是去在表后加上一列,去破坏默认的表结构,而是将数据存在wp_usermeta中。...在上文中我们已经介绍了WordPress数据库中各个表的作用,本文将继续介绍每个表中每个列的作用。WordPress官方文档已经有比较详细的表格,本文仅对常用数据进行介绍。...auto_toggle -这个字段所包含的是一个比较特别的属性。如果为Y,则当该分类中加入了新链接时,其它的链接会变为不可见。它是一个枚举型的值enum(’Y’,’N’),默认为N。...文章与分类的关系的形成是这样的:rel_id是一个不断增加的自增量,它用于识别每不同的post。post_id可以重复(当它对应多个分类时),因为它可被rel_id识别,所以不会出现混乱。...每个post_id可对应多个category_id时,一个rel_id + post_id组合,可以识别某一个分类,因此每个文章的分类可以是不同的。
/* 判断是否存在图片,定义不同的接口 */ if(!...课外总结 get_the_category(获取分类相关内容) 说明 如要查看一些说明,请点击http://www.favortt.com/wordpress-functions-class 描述 模板标签函数用来返回的值是一个数组形式的对象...> 显示多个分类名称(当一个篇文章有多个分类的时候) //显示的内容就是上面提到的返回值 通过上面的方法我们就可以在文章的循环外获取分类的内容,这样我们就可以用在很多的功能中,比如可以在每篇文章下面添加一个相关文章列表 附录 错误及解决方案 改为https...: certificate has expired 记得之前看张戈博客时看到一篇他遇到问题的解决方案,就上去看了下,发现里面解决https的方法是把图片链接的https替换成http,抱着试一试的态度,
具体来说,当该插件的updateAJAX.php文件接收到一个post_id参数时,没有对该参数进行充分的过滤和验证。...这意味着攻击者可以注入恶意的脚本代码作为post_id参数的值,然后该脚本代码将在受影响的页面上执行,对用户造成潜在的安全威胁。...分享给大家两个恶意行为的具体操作: 案例一: 攻击者通过构造恶意链接,将恶意脚本代码注入到IWantOneButton插件的updateAJAX.php文件的post_id参数中当用户点击该链接时,恶意脚本将被执行...当目标用户查看包含该评论或表单的页面时,恶意脚本将被执行,可能会导致用户受到XSS攻击,例如窃取用户的Cookie信息或进行其他恶意行为。...为了解决这个问题,插件的开发者应该对接收到的post_id参数进行充分的过滤和验证,确保用户输入的数据不包含恶意脚本代码,并采取适当的安全措施来防止跨站脚本攻击。
baidusubmit,我要他们检查 token 和域名,也反馈是正确的,直到我亲自给一个站长 Debug 时才发现是他主机的 curl_exec()函数被禁用了!...③、代码部署 从上面选好合适的代码后(推荐①),先打开百度官方页面:http://zhanzhang.baidu.com/linksubmit/index,获取你网站的专属的 token 值,替换到代码中的...我个人认为,之前百度应该是通过分析文章中的时间戳来确认原创文章的发布时间。但是时间戳是可以作弊的,而百度蜘蛛的抓取也不是及时的,这样就带来了文章是否真实原创的争议!...这个工具直接将链接推送给百度,而原来的工具推送的是结构化数据,需要百度进一步解析和内部排序。天下功夫,唯快不破。高手对决中,1 微秒决定胜负。...新的主动推送工具第二个特点就是“人性化”。 首先是密匙的人性化,同一个帐号下所有站点的密匙相同。
action 列的类型是 ENUM,可能的值为 ('view', 'like', 'reaction', 'comment', 'report', 'share')。...extra 列拥有一些可选信息,例如:报告理由(a reason for report)或反应类型(a type of reaction)等。... | int | | remove_date | date | +---------------+---------+ 这张表的主键是 post_id。...这张表的每一行表示一个被移除的帖子,原因可能是由于被举报或被管理员审查。 编写一段 SQL 来查找:在被报告为垃圾广告的帖子中,被移除的帖子的每日平均占比,四舍五入到小数点后 2 位。...其余几天没有收到垃圾广告的举报,因此平均值为:(50 + 100) / 2 = 75% 注意,输出仅需要一个平均值即可,我们并不关注移除操作的日期。
其他可能的字段,如 is_deleted(标记评论是否被删除)等。 后端逻辑 接收和存储评论 当用户提交评论时,后端接收到评论内容、用户 ID、(如果有的话)父评论 ID 和帖子 ID。...一种方法是,在检索帖子的评论时,首先获取所有一级评论(parent_id 为 NULL 或 0),然后对每个一级评论,检索其子评论。...这可以通过在后端逻辑中检查 post_id 和 parent_id,并查询这些 ID 对应的用户,然后向他们发送通知(例如,通过邮件、应用内通知等)实现。...前端展示 展示评论 使用 Vue3,你可以构建一个递归组件来展示评论和它们的回复。这个组件应该能够显示一个评论,并检查是否有回复。如果有,就为每个回复再次调用自己。...order_by=score&limit=20&offset= 一级评论会分页(offset=),下方点击查看全部评论: 获取一级评论的接口也会获取每个一级评论喜欢数最多的前两个评论(不管是当前一级评论的回复
action 列的类型是 ENUM,可能的值为 ('view', 'like', 'reaction', 'comment', 'report', 'share')。...extra 列拥有一些可选信息,例如:报告理由(a reason for report)或反应类型(a type of reaction)等。...| int | | remove_date | date | +---------------+---------+ 这张表的主键是 post_id。...这张表的每一行表示一个被移除的帖子,原因可能是由于被举报或被管理员审查。 编写一段 SQL 来查找:在被报告为垃圾广告的帖子中,被移除的帖子的每日平均占比,四舍五入到小数点后 2 位。...其余几天没有收到垃圾广告的举报,因此平均值为:(50 + 100) / 2 = 75% 注意,输出仅需要一个平均值即可,我们并不关注移除操作的日期。
领取专属 10元无门槛券
手把手带您无忧上云