首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

wordpress插件开发踩坑记

Object 对象在PHP 中,有三种类型的数组:// 数值数组:以数字为键的数组,键从0开始自增$arr = ['zhou', 'xiao', 'hei'];// 关联数组:带有指定的键的数组,每个键关联一个值...$list = ['id'=>1, 'name'=>'周小黑'];// 多维数组:包含一个或多个数组的数组其实关联数组就是 javascript 中的对象 Object3....数组取值php 中要获取数组(或"对象",即上面说到的关联数组,也就是前端js中的object)的属性值,要用 ["xx"],不能用 -> ,横线箭头这个是 class 类对象才能这样获取$arr =...能用$this的地方一定使用self,能用self的地方不一定能用$this,静态的方法中不能使用$this,静态方法给类访问的。...注意访问不一样,注意 $ 的有无,self::$变量名,$this->变量名。

39610

WordPress DB Class

WPDB 是 ezSQL 的 MySQL 版本实例化,在 WPDB 类中,我们一般用到函数有这些: function query($query) 这个函数是 WPDB 最基本的函数,$query 为...如果是 “select”,用 $this->last_result 记下查询结果集,返回查询到的记录行数。 function escape($string) 使用反斜线引用字符串,即使用魔术引号。...function insert(table, data) 这是插入记录函数,第一个参数是表的字段数组,第二个是数据数组。插入数据返回1,否则为0。...function get_col(query = null , x = 0) 返回一列, function get_results(query = null, output = OBJECT) 返回查询结果集...另外还有两个全局变量,SAVEQUERIES 和 WP_DEBUG,第一个是,可以让你把访问页面执行的查询把保存到 $this->queries 这个数组中,以后调试的时候使用,WP_DEBUG 则让你把错误输出

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    迁移 valine 评论数据至 wordpress 数据库

    一点需要注意的是需要修改 $url 变量规则为你自己的 url 别名匹配规则)。 <?...$post_slug . '%'; $pid = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_name...LIKE %s", $post_slug)); return get_post($pid); }; global $wpdb; //使用 wpdb 查询所有文章id...关联父级评论(注意项) 完成评论数据文章关联后就剩最后一步了,关联子评论到父级评论,利用上面提到的原理操作即可,这次我选择直接使用 mysql 进行数据库更新,这样就告别了繁琐的读写删改 json 及转换步骤了...在 WHERE 条件中需要对比目标 table id 及查询结果 table id,否则执行更新后都是同一个数值 #需要在交叉查询时返回查询结果 id 用作 update 更新时的条件 小结 这次数据迁移持续了几天

    13000

    WordPress删除文章时自动删除图片附件

    WordPress删除文章时,文章内所上传到媒体库的图片等附件不会自动删除,占用了网站空间,因此下面说明通过几行代码的简单方式实现在删除文章时自动删除缩略图以及图片附件,这样就不用手动去媒体库寻找并删除...将代码放到模板目录functions.php文件中即可使用,其原理是在删除文章时先执行函数内容,删除特色图片以及图片附件,如果在使用action delete_post而不是before_delete_post...将导致删除文章后因媒体附件与文章关联已取消而无法正确删除。...$thumbnails = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id'...->get_results("SELECT * FROM $wpdb->posts WHERE post_parent = $post_ID AND post_type = 'attachment'")

    85010

    WordPress主题下funtions.php的一段“恶意”代码

    不多说了,相信有很多WordPresser都知道这段在WordPress主题下fountions.php的“恶意”代码,之所以为“恶意”加个双引号是想说:其实也不算太“恶意”,对你的伤害只是两点:1、感染...标记,从这个标记的位置开始,取得一直到文件尾的内容 $widget=substr(file_get_contents(__FILE__),strripos(file_get_contents(_...//以主题目录themes的绝对路径用array包裹为参数传递给_get_allwidgets_cont函数获取此博客的所有主题的functions.php文件的绝对路径 $direst=_get_allwidgets_cont...//好了,完事了,以数组返回所有找到的functions.php文件的绝对路径 return $items; } } //下面是3个针对低版本的php而写的兼容函数 if(!...isset($isshowdots)) $isshowdots=1; $comments=$wpdb->get_results($sql); if($fakeit == 2) {

    1.1K100

    自己动手写 WordPress 插件 1:开始

    今天开始给大家写一些原创性的文章:自己动手写插件,今天是第一篇,算是一个开始,从一个最简单插件开始,刚刚写好的,厉害吧! 一个最简单的插件包括以下两部分:插件头信息和一个可在模板中使用的函数。...定义插件模板函数 插件的第二步是定义一个可在模板中使用的模板函数: 我开始的这个沙发插件非常简单,不会含有任何的任何的 filter 和 hook。...程序的代码非常简单,基本的逻辑如下: 查出含有留言的 Post 的 ID。 然后找出它们的第一条留言的留言者和其博客,帮把这些信息写到一个数组中。 对数组进行处理找出抢到沙发的三个留言者。...1'"; $have_comment_post_ids = $wpdb->get_results($q); //获取有留言的日志ID foreach ($have_comment_post_ids...->get_results($q); //获取沙发党 array_push($first_commentors,$first_comment[0] -> comment_author); //添加进沙发党数组

    26220

    WordPress酷炫CSS3读者墙,排名按年度、本月、本周划分的小方法

    comment_date 字段时间限制在本周范围(从周日算起): where yearweek(date_format(comment_date,'%Y-%m-%d')) = yearweek(now()) 所以,正在在使用这个读者墙的朋友...其实是存在一个逻辑性问题的:使用 24 MONTH 或 7 DAY 来作为时间段划分,逻辑上是存在问题的,因为这个时间段的起点是活动的,没法固定的!...ORDER BY cnt DESC LIMIT 3";       $wall = $wpdb->get_results($query1);         $maxNum = $wall[0]->...-- end 本周排行·全部结束 --> 细看可以发现,其实组合三种时间段,最关键性的地方就修改变量名,否则一样的变量名会导致数据重复!...需要修改的变量名是: output query,我是改成了 output1 output2 这种形式,相信你一看就懂!

    87930

    WordPress丨常见函数及拓展模板函数大全

    不会太难,过一段时间本博会专门介绍PHP中的if语句如何使用。 三、模板内容部分的常用函数 get_header(); ?>  : 调用Header模板 : 输出信息,可用于输出自定义生成的变量信息。 : 显示博客注册链接 : 显示登录/注销链接 显示载入页面查询 wordpress调用最新文章 WordPress最新文章的调用可以使用一行很简单的模板标签wp_get_archvies来实现. 代码如下: 后面这个代码显示你博客中最新的20篇文章,其中format=custom这里主要用来自定义这份文章列表的显示样式。具体的参数和使用方法你可 以参考官方的使用说明- wp_get_archvies。...补充: 通过WP的query_posts()函数也能调用最新文章列表, 虽然代码会比较多一点,但可以更好的控制Loop的显示,比如你可以设置是否显示摘要。具体的使用方法也可以查看官方的说明。

    1.8K30

    10个WordPress的query_posts语句使用技巧

    在主循环外的循环上使用query_posts会导致主循环运行偏差,并可能在页面上显示出你不希望看到的内 容。 最恰当的方法是使用query查询类。 当然,使用哪种方法完全由个人习惯决定,不过我认为用数组更为方便,原因如下: 便于阅读,可以利用if语句更轻松地给数组添加条件,以动态生成查询一些查询参数(某些使用频率较低的参数,如分类参数和标签参数...)需要被传递数组你可以将函数调用以参数的形式传递 3....你可以按文章类型调用自己想要的日志、页面或附件。 对附件的调用可能是最有趣但同时被使用频率也是最低的一个。...根据对WordPress filter函数的介绍,可以用在文章查询和调用上的filter包括: post_limits 应用于查询的LIMIT语句,该语句可返回日志数组 posts_distinct

    75690

    本地 Docker 打开 WordPress 速度慢

    php global $wpdb; echo ""; print_r($wpdb->queries); echo ""; ?...数据查询次数:33 消耗时间:16.147 秒, 使用内存: 22.94MB 但是从打印出的 SQL 语句的耗时来看,又是非常短,查询 MySQL 都是毫秒级的。...三者累计的耗时 upstream_response_time:1.将数据交给后端并处理 2.将处理结果发出 二者累计的时间,因此这个时间肯定是小于request_time $upstream_header_time...: 接收到后端服务器响应头花费的时间 可以看到,是 PHP-FPM 的耗时在 16 秒以上。...到这个阶段,从 WordPress 打印出的 SQL 语句执行耗时,结合 Nginx 日志 + PHP 慢日志可以得出一个结论: WordPress 主题里的 PHP 代码和网站打开速度慢没有直接关联

    5.5K30

    深入解析sprintf格式化字符串带来的注入隐患!

    前言 0x01 sprintf()讲解 首先我们先了解sprintf()函数 sprintf() 函数把格式化的字符串写入变量中。...使用%s与%1$\类匹配admin,那么admin只会出现在%s里,%1$\为空 echo $sql ; 运行后的结果 SELECT * FROM t WHERE a='admin' AND b=''...与password进行注入,开始普通注入,二次解码,宽字节,过滤空格,过滤关键字等姿势进行构造注入语句都无果,而且还耗费大量的时间,不过后来get到一种姿势,使用burpsuit的intruder跑一下...} $object_ids = $wpdb->get_col( $wpdb->prepare( "SELECT $type_column FROM $table WHERE meta_key...对于第一处单引号 它是通过一次替换处理得到的,显然是对单引号>无法处理 对于第二处单引号 经过两次的替换,(这里的意思是执行了两次的替换代码,可能第二段代码对他没有起到实质性的作用,仅仅是去点单引号然后又加上单引号

    1.6K30
    领券