整理:WordPress插件制作入门教程


前言

最近在学习如何制作WordPress插件。在这方面,网上的资料还是不多的。我是指适合入门的资料。今天又在网上搜索了一下,发现了几篇非常不错的制作WordPress插件的教程。

现在把这几篇文章整理放在一起,以方便大家学习。

下面两篇是Kangzj的作品,翻译自WordPress的原文档(Writing a Plugin)。非常不错。原文

WordPress插件制作入门教程(一)

1. 简介

WordPress插件使得WordPress变得扩展性强、易修改和个性化。不用修改WordPress的核心,你只要简单的加几个插件,很多功能就能够轻松实现。下面给出WordPress插件的定义:

WordPress插件:它是用PHP编写的一个程序或一个或者几个函数的组合,它利用WordPress提供的API和WordPress本身的一些调用点,给WordPress增加新的功能或者特性。

希望WordPress有新功能的或者想修改一下功它的某个功能?你所要做的第一件事就是从WordPress大量的插件中寻找,有没有人已经制作过这样的插件,如果有,直接用就好了。如果没有,这篇文章可以指导你做你自己的WordPress插件。

这篇文章假设你对WordPress的工作方式和PHP编程比较了解了。

2. 创建一个新的插件

这一部分会把插件制作的步骤都涉及到了,你只要跟着做就好了,同时也告诉你创建一个新的插件时应该考虑的东西。

2.1 插件名、文件和文件存放的位置

2.1.1 插件名

做插件的第一步当然是考虑清楚你的插件的功能,给你的插件起个名字。到WordPress官方网站和其它资源查找下有没有相同的名字,当然你也可以Google一下,以保证你的插件的名字是唯一的。很多插件的开发者以插件的功能给插件命名。比如说,一个跟“天气”相关的插件很有可能起一个含有”Weather”的名字。名字可由多个单词组成。

2.2.2 插件的文件

下一步就是创建插件的PHP文件。例如,你的插件名字是“Fabulous Functionality”,你可以给你的PHP文件起一个名字“fabfunc.php”。和插件的名字一个道理,这个PHP文件也要起一个唯一的名字。用你插件的人会把你的文件放到plugin目录里,也就是/wp-content/plugins/,所以任何两个插件的PHP文件都不能有相同的名字,否则会引起冲突和误会。

上面是你的插件只有一个文件的情况。你也可以把你的PHP文件拆分成多个文件。你的WordPress插件应该至少含有一个PHP文件,也可以有JavaScript,Css,图像,语言等文件。如果有多个文件,就把他们全都放到一个目录下面,这个目录的名字也要是唯一的。告诉你的插件的使用者,把整个文件夹上传到/wp-content/plugins/就可以了。

下面所提到的“插件的PHP文件”是指插件的主要的PHP文件,有可能在/wp-content/plugins/中,也有可以在这里面的一个子目录中。

2.2.3 Readme文件

如果你想把你的插件上传到http://wordpress.org/extend/plugins/中,你应该按标准的格式创建一个Readme文件,放到你的插件文件中。这里介绍Readme文件的格式:http://wordpress.org/extend/plugins/about/readme.txt

2.2 插件主页

为你的插件创建一个主页是很有用处的,你可以在这个主页上介绍如何安装你的插件,插件的功能,插件兼容的WordPress的版本,插件不同版本之间功能的变化,怎么使用插件等等。

2.3 PHP文件的文件头信息

现在到了写点东西到你插件的PHP文件中的时候了。

2.3.1 标准的插件信息头

你插件的主要的PHP文件的头部,必须写上标准的插件信息。这个插件信息头让WordPress找到你的插件,并把你的插件加入到插件管理中去,这样这个插件才能被激活、加载和运行。没有这个插件信息头,你的插件就不会被识别,也完全不会起任何作用。下面是插件信息头的格式:

<?php
/*
Plugin Name: Name Of The Plugin
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: A brief description of the Plugin.
Version: The Plugin's Version Number, e.g.: 1.0
Author: Name Of The Plugin Author
Author URI: http://URI_Of_The_Plugin_Author
*/
?>

这些信息中,如果不写“Plugin Name”WordPress就无法识别插件。其它的几项信息在插件管理的页面会有显示。信息的顺序是没有要求的。

2.3.2 授权信息

通常大家就直接用标准的授权信息当作自己的授权信息。很多的插件用得就是GPL。加入下面的文字,可以简要的说明GPL:

<?php
/*  Copyright YEAR  PLUGIN_AUTHOR_NAME  (email : PLUGIN AUTHOR EMAIL)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/
?>

WordPress插件制作入门教程(二)

3. 开始编程实现你的插件

上面把流程交待得很清楚了,下面该让你的插件做点事情了。这一部分包含一些插件开发的基本的原则,教给你如何让你的插件完成几个不同的任务。

3.1 WordPress插件钩子

很多插件通过连接一个或多个WordPress钩子来完成自己的功能。插件钩子工作的原理是,在WordPress运行的某些时刻,它会去检查是不是有插件注册了函数,如果有的话,就会运行这个插件的函数。这些函数改变了WordPress默认的功能。

 

比如说,在WordPress输出页面的title之前,它会先检查一个是不是有插件注册了“the_title”的“filter”钩子。如果有的话,title的文本就会通过一个个的函数处理,最后再输出结果。所以,如果你的插件想改变title的话,注册一个“the_title”的filter钩子就可以了。

另外一种是“action”钩子,比如“wp_footer”。在HTML页面快要执行完的时候它会检查是不是有插件注册了“wp_footer”的“action”钩子,如果有的话,就一个一个地执行。

你可以在Plugin API中找到更多的这种“filter”和“action”类型的钩子。如果你想在WordPress中的某一部分使用钩子,你也可以向开发者建议添加一个这样的钩子。

3.2 模板标记

另外一种利用插件增强WordPress功能的方式是创建模板标记。使用你插件的人可以把这些标记加入到WordPress的模板里,可能放在sidebar等合适的地方。比如,一个地理位置的插件,定义一个放在sidebar里的geotag_list_states(),可以列所有这篇文章相关的“州”,点击这些“州”的时候,所有相关的文章会被列出来。

要定义一个模板标记,只要写一个PHP函数和文档,然后放在插件的主PHP文件中或者你插件的主页上举例一个例子说明应该往模板里加什么东西,怎样加,并在代码前后加上<?php  ?>。

3.3 把插件的数据保存到数据库

大部分的WordPress插件需要保存一些数据,这些数据可以保存在WordPress的数据库里,这里有两种基本的、把插件数据保存到WordPress数据库的方法:

1.用WordPress的“option”机制(下面会详述)。这种方法可以保存较少量的、分散的数据,是那种一开始让用户输入的选项形式的,以后基本不会变的数据。

2. Post Meta。对和单独文章、页面、附件相关的数据比较合适。可以查看:post_meta函数示例

3. 新建一个数据表。这种方式适用于那些和文章、页面、评论等相关的数据,它们会随时间推移而增长。可以看一下这里“用插件创制数据表”。

3.4 WordPress的option机制

点击这里可查看怎么创建可以自动地帮助你把插件的配制信息保存的插件管理面板

WordPress有一套在数据库中保存、更改、读取独立的、有名字的数据(”options”)的机制。option的值可以是string, array或者php对象(在存储前会被序列化,或者转化成string)。option的名字是string类型,必须唯一,这样才能不和其它的WordPress插件冲突。

下面是你的插件调用WordPress需要用到了的主要的函数:

add_option($name, $value, $deprecated, $autoload);

$name和$value当然就是你的option的名字和值啦;

$deprecated可选,WordPress已经不用了,可以传一个空值。

$autoload也是可选(’yes’  or ”),默认为yes,即会被get_alloptions函数自动加载。

get_option($option);

从数据库中读取$option的值。

update_option($option_name, $newvalue);

这个就不用解释了。

3.5 插件设置页面

这部分将在以后文章中详述。

4. 国际化你的插件

做好了你的插件之后,你就可以考虑国际化了,让更多的人可以使用这个插件。在软件安装中,这叫做本地化,也就是把软件中使用的语言翻译成不同的语言。这里有相关的内容:I18n for WordPress Developers

5. 插件开发建议

  1. WordPress的插件应该遵循“WordPress Coding Stardards”。也要考虑程序中的注释的标准。
  2. 你插件中的函数名不能和WordPress核心的函数或者其它WordPress插件的函数有重名。可以通过给你的函数加一个前缀,也可以在类中定义你的函数来解决这个问题。
  3. 代码中不要把WordPress前缀写死成“wp_”,要写成$wpdb->prefix。
  4. 读数据库成本低,但是写却很高。所以尽量减少向数据写东西的次数。
  5. 只“Select”你需要的字段。不要用“Select *”这样的语句,不要让你的插件把整个WordPress拖慢。
  6. 把你插件中所有的错误修正,把PHP的Debug打开,在wp_config.php中添加define('WP_DEBUG', true),找出所有的error和warning,并修改之。

注:下面这篇文章是转自ABitNo,原文(ABitNo也会写WordPress插件了)。以一个实例讲解了创建插件的简单步骤。

WordPress插件制作入门教程(三),简单实例分析

一个Plugin首先要有好的目录结构,然后还要有好的代码组织方式。下面就按照那个教程中给的方式写一个简单的毫无用处的插件,插件的效果就是在head中加一个注释

<!--ABitNo is here ! -->

Devlounge推荐一个简单插件的主文件分成四块来写

Step 1:定义插件的信息

/*
 * Plugin Name: ABitNo IN Head
 * Plugin URI: http://abitno.linpie.com/abitno-wordpress-plugin.html
 * Version: 0.1
 * Author: Cedirc Fung
 * Description: Put annotation 'ABitNo is here' to the header
 */

Step 2:创造一个Class和相关的function

if(!class_exists('AbitnoInHead')) {
    class AbitnoInHead {
        function abitno_in_head() {
            echo('<!-- ABitNo is here ! -->');
        }
    }
}

Step 3:实例化创建的Class

if( class_exists('AbitnoInHead') ) {
    $abitno_head = new AbitnoInHead();
}

Step 4:添加Action和Filter

if(isset ($abitno_head)){
    add_action('wp_head', array(&$abitno_head, 'abitno_in_head'), 1);
}

这样一个插件就完成了,把这些代码组合到一个PHP文件,比如abitno-in-header.php中,然后放到WordPress的plugins目录内,到后台激活就能生效了。用查看源码功能可以在Blog的<head>和</head>之间的某个地方发现有个<!– ABitNo is here ! –>

这只是一个小小的演示,至于有些什么Action和Filter还是要看API的。。。

注:下面这篇文章转自:Dissect WordPress Plugin 2

WordPress插件制作入门教程(四),添加菜单

以WordPress FeedBurner Plugin中添加菜单为例:

如果想添加一个菜单,就需要注册“admin_menu”这个Action Tag(系统事件):

    <?php add_action('admin_menu', 'ol_add_feedburner_options_page'); ?>

即可,插件中的这个函数为:

<?php function ol_add_feedburner_options_page() {
if (function_exists(‘add_options_page’)) {
add_options_page(‘FeedBurner’, ‘FeedBurner’, 8, basename(__FILE__), ‘ol_feedburner_options_subpanel’);
}<br>}
?>

“add_options_page”这个函数就会在系统的“Options”菜单中添加“FeedBurner”这样一个子菜单。

WordPress插件制作入门教程(五),常用函数学习

WordPress官方的函数列表:http://codex.wordpress.org/Function_Reference

WordPress啦上的教程(中文版):

插件及插件开发资源

~完~


273条回应:“整理:WordPress插件制作入门教程”

  1. 你好,非常感谢你的文章,对我很有帮助。我对wordpress的开发还是很迷惑,我想知道怎么修改插件。比如我拿到一个插件,应该从哪个文件开始读起?怎么能能知道这个插件是怎么集成到wordpress中的?

    我理性思维不是很好,又不知道怎么能对wordpress有个感性的把握 [流泪]

  2. 我是看你的menu里有生物信息学啊,我中学对生物还是蛮感兴趣的。博主的wp笑而不语。你那个菜单挺好哦,是模板自带的还是你自己写的啊

  3. […] pr西,是一个一个关于web的很不错的网站本文短网址:http://goo.gl/ZxjhN分享到: 新浪微博 腾讯微博 豆瓣 开心网 人人网 QQ 空间 邮件相关文章数据库操作之使用别名« 浅谈jQuery 分类: 心得与总结 | RSS 2.0 评论已关闭 | […]

  4. Thank you for another great post. Where else could anyone get that kind of information in such a perfect way of writing? I have a presentation next week, and Im on the look for such information.

  5. […] 玩Wordpress也有半年有余了吧,琢磨着要开发一个插件-如左图所示,可是相关的中文资料少之又少,百度了半天都没有找到几篇,昨天发现一篇柳城的网文,不错。原文。  […]

  6. Google

    Please visit the websites we adhere to, which includes this 1, because it represents our picks from the web.

  7. Webdesign Kiel

    […]that may be the end of this report. Right here you’ll discover some websites that we assume you will appreciate, just click the links over[…]

  8. News Archive

    […]very couple of internet websites that come about to be comprehensive below, from our point of view are undoubtedly nicely worth checking out[…]

  9. free call

    […]just beneath, are a lot of absolutely not connected internet sites to ours, even so, they are surely really worth going over[…]

  10. tdi indicator explained

    […]very couple of internet sites that take place to become detailed beneath, from our point of view are undoubtedly well really worth checking out[…]

  11. uae

    […]we like to honor several other net web pages around the internet, even if they aren’t linked to us, by linking to them. Underneath are some webpages really worth checking out[…]

  12. dried food storage

    […]please take a look at the internet sites we adhere to, which includes this one particular, because it represents our picks from the web[…]

  13. conversational tone

    […]although web sites we backlink to beneath are considerably not connected to ours, we feel they’re actually worth a go by way of, so possess a look[…]

  14. sexy girl

    […]just beneath, are many entirely not connected internet sites to ours, however, they’re surely really worth going over[…]

  15. Screen protection Microsoft Nokia Lumia

    No More scratch your device with display protection film is the ultimate protection for the iPhone, iPad, Android, Blackberry,iPod, and any mobile device. Display protection film optically clear and custom-fit for full body and screen protection.

  16. Pierre Wardini

    […]Wonderful story, reckoned we could combine several unrelated information, nevertheless actually worth taking a search, whoa did one master about Mid East has got a lot more problerms also […]

  17. ebay suspension

    […]Every once in a while we decide on blogs that we read. Listed below would be the most up-to-date sites that we decide on […]

  18. Garden Bridges

    […]Every the moment inside a while we select blogs that we study. Listed below are the latest sites that we pick out […]

  19. Kelowna News

    […]we like to honor several other internet websites around the net, even when they aren’t linked to us, by linking to them. Under are some webpages really worth checking out[…]

  20. data entry jobs

    […]we like to honor lots of other world wide web websites on the web, even when they aren’t linked to us, by linking to them. Underneath are some webpages worth checking out[…]

  21. Porn Movie

    […]Every after in a though we select blogs that we study. Listed beneath are the most current internet sites that we select […]

  22. CPR

    […]we came across a cool website that you may enjoy. Take a appear if you want[…]

  23. Flights to London Heathrow

    […]that would be the end of this article. Right here you’ll come across some web pages that we feel you’ll enjoy, just click the hyperlinks over[…]

  24. Buste di Carta per spedizione

    […]we prefer to honor lots of other net web pages around the internet, even when they aren’t linked to us, by linking to them. Underneath are some webpages really worth checking out[…]

  25. voip free calling

    […]Wonderful story, reckoned we could combine a number of unrelated data, nonetheless definitely worth taking a appear, whoa did one particular study about Mid East has got more problerms as well […]

  26. Business directory

    […]very handful of sites that transpire to be in depth below, from our point of view are undoubtedly effectively worth checking out[…]

  27. friv

    […]just beneath, are several entirely not connected websites to ours, however, they may be certainly worth going over[…]

  28. Trade Show Displays

    […]Wonderful story, reckoned we could combine a handful of unrelated data, nonetheless genuinely worth taking a appear, whoa did one study about Mid East has got far more problerms also […]

  29. 411 PAIN

    […]we prefer to honor a lot of other net internet sites around the net, even when they aren’t linked to us, by linking to them. Beneath are some webpages really worth checking out[…]

  30. RMUTT

    […]although web-sites we backlink to below are considerably not connected to ours, we feel they are in fact worth a go via, so have a look[…]

  31. Bangkok pills

    […]check beneath, are some entirely unrelated web-sites to ours, having said that, they’re most trustworthy sources that we use[…]

  32. nasa

    […]below you will come across the link to some web sites that we believe you should visit[…]

  33. laptop repair

    […]always a massive fan of linking to bloggers that I adore but really don’t get a whole lot of link really like from[…]

  34. Buddhistlent

    […]Every as soon as in a whilst we decide on blogs that we study. Listed below are the most current sites that we pick out […]

  35. Tamera Litzsinger

    […]very couple of web-sites that occur to be in depth beneath, from our point of view are undoubtedly nicely worth checking out[…]

  36. KeywordS:

    […]here are some hyperlinks to web-sites that we link to due to the fact we feel they may be really worth visiting[…]

  37. tiny jars

    […]Every when inside a although we opt for blogs that we study. Listed beneath would be the most up-to-date websites that we pick out […]

  38. hog wild

    […]Wonderful story, reckoned we could combine a handful of unrelated data, nevertheless seriously really worth taking a appear, whoa did one find out about Mid East has got a lot more problerms too […]

  39. friends

    […]always a major fan of linking to bloggers that I enjoy but really don’t get a lot of link really like from[…]

  40. pdr training

    […]check below, are some absolutely unrelated internet sites to ours, nonetheless, they are most trustworthy sources that we use[…]

  41. voip card

    […]here are some links to internet sites that we link to mainly because we feel they may be really worth visiting[…]

  42. voip calling

    […]always a major fan of linking to bloggers that I appreciate but don’t get a good deal of link really like from[…]

  43. Simpleexport Docudiscover

    […]Wonderful story, reckoned we could combine a handful of unrelated data, nevertheless actually worth taking a appear, whoa did a single learn about Mid East has got more problerms too […]

  44. Bondage Bed

    […]we like to honor numerous other world-wide-web web-sites on the net, even though they aren’t linked to us, by linking to them. Under are some webpages worth checking out[…]

  45. miniclip games

    […]here are some links to web-sites that we link to mainly because we consider they may be really worth visiting[…]

  46. almond

    […]we came across a cool web page that you simply might love. Take a search if you want[…]

  47. anzac day tours

    […]that will be the end of this post. Here you’ll uncover some web sites that we feel you will enjoy, just click the links over[…]

  48. std symptoms

    […]Wonderful story, reckoned we could combine a few unrelated data, nonetheless truly really worth taking a search, whoa did one master about Mid East has got extra problerms also […]

  49. hotel de la ville

    […]check beneath, are some totally unrelated web sites to ours, nonetheless, they may be most trustworthy sources that we use[…]

  50. dent repair school

    […]very couple of web sites that come about to become detailed below, from our point of view are undoubtedly well worth checking out[…]

  51. global voip call

    […]we like to honor many other world-wide-web web-sites around the internet, even though they aren’t linked to us, by linking to them. Underneath are some webpages really worth checking out[…]

  52. Dolphins Riviera Maya

    […]although internet websites we backlink to beneath are considerably not related to ours, we feel they are really really worth a go by way of, so have a look[…]

  53. sumo suit hire

    […]very handful of internet sites that take place to be comprehensive below, from our point of view are undoubtedly very well worth checking out[…]

  54. hotels.com coupons

    […]just beneath, are a lot of absolutely not associated web pages to ours, nevertheless, they’re certainly really worth going over[…]

  55. check it out

    […]we prefer to honor many other world-wide-web sites on the net, even if they aren’t linked to us, by linking to them. Beneath are some webpages worth checking out[…]

  56. globalseoagency

    […]that could be the end of this post. Here you’ll obtain some web sites that we believe you’ll appreciate, just click the links over[…]

  57. veilingen

    […]that would be the end of this report. Right here you will obtain some web sites that we assume you’ll enjoy, just click the links over[…]

  58. red devil butt plug

    […]Wonderful story, reckoned we could combine a handful of unrelated data, nevertheless truly really worth taking a look, whoa did 1 discover about Mid East has got much more problerms also […]

  59. free calling

    […]that may be the end of this post. Right here you’ll discover some sites that we believe you will enjoy, just click the links over[…]

  60. Superb Digital

    […]Every after in a although we opt for blogs that we study. Listed below would be the most recent web sites that we pick […]

  61. Vitals

    […]check beneath, are some absolutely unrelated sites to ours, having said that, they’re most trustworthy sources that we use[…]

  62. Cheap Viagra Online

    […]Wonderful story, reckoned we could combine a couple of unrelated information, nevertheless seriously really worth taking a appear, whoa did 1 find out about Mid East has got extra problerms at the same time […]

  63. pdr training

    […]always a massive fan of linking to bloggers that I love but do not get a good deal of link love from[…]

  64. alabama football

    […]that is the finish of this report. Right here you’ll discover some web-sites that we believe you’ll appreciate, just click the hyperlinks over[…]

  65. viagra

    […]check below, are some totally unrelated internet websites to ours, on the other hand, they may be most trustworthy sources that we use[…]

  66. big tits

    […]we came across a cool site that you just may possibly appreciate. Take a look when you want[…]

  67. SEO

    […]very couple of websites that come about to be comprehensive beneath, from our point of view are undoubtedly properly really worth checking out[…]

  68. Nouveau Finance

    […]Wonderful story, reckoned we could combine some unrelated information, nonetheless genuinely worth taking a appear, whoa did one particular learn about Mid East has got far more problerms too […]

  69. Nouveau Finance

    […]very couple of internet websites that take place to be in depth beneath, from our point of view are undoubtedly very well really worth checking out[…]

  70. Best Vibrator

    […]please pay a visit to the web sites we stick to, such as this one, because it represents our picks from the web[…]

  71. Suzuki

    […]very couple of web-sites that happen to be in depth below, from our point of view are undoubtedly properly really worth checking out[…]

  72. Cloud Business Continuity

    […]very handful of internet websites that come about to become in depth below, from our point of view are undoubtedly properly really worth checking out[…]

  73. xadat

    […]please check out the websites we follow, which includes this a single, because it represents our picks through the web[…]

  74. tech dispensary

    […]very handful of web-sites that take place to become in depth below, from our point of view are undoubtedly nicely worth checking out[…]

  75. online translation job

    […]very couple of web-sites that take place to be detailed beneath, from our point of view are undoubtedly nicely really worth checking out[…]

  76. free slots free slots

    […]Wonderful story, reckoned we could combine a handful of unrelated data, nonetheless really really worth taking a search, whoa did one particular discover about Mid East has got more problerms too […]

  77. free slot download

    […]just beneath, are a lot of absolutely not associated web sites to ours, on the other hand, they are surely really worth going over[…]

  78. best free slots

    […]that would be the end of this post. Here you’ll discover some sites that we consider you’ll enjoy, just click the hyperlinks over[…]

  79. Best Penis Ring

    […]that would be the end of this report. Right here you will locate some websites that we assume you will enjoy, just click the hyperlinks over[…]

  80. 86303

    […]the time to study or go to the content material or web sites we’ve linked to beneath the[…]

  81. online games

    […]we prefer to honor several other net web pages on the net, even when they aren’t linked to us, by linking to them. Beneath are some webpages worth checking out[…]

  82. environ

    […]we prefer to honor quite a few other web web-sites around the web, even though they aren’t linked to us, by linking to them. Below are some webpages worth checking out[…]

  83. online pakistani drama serials

    […]Wonderful story, reckoned we could combine several unrelated data, nevertheless actually worth taking a search, whoa did a single understand about Mid East has got additional problerms at the same time […]

  84. Roof Cleaning

    […]just beneath, are a lot of absolutely not associated web pages to ours, however, they’re surely worth going over[…]

  85. amazon coffee mugs

    […]although internet sites we backlink to beneath are considerably not connected to ours, we really feel they’re essentially worth a go by means of, so possess a look[…]

  86. Sports Girls

    […]although websites we backlink to below are considerably not related to ours, we really feel they are truly worth a go as a result of, so possess a look[…]

  87. felony background check

    […]check beneath, are some completely unrelated internet websites to ours, on the other hand, they’re most trustworthy sources that we use[…]

  88. online tv

    […]please go to the websites we follow, like this one particular, because it represents our picks in the web[…]

  89. Sex Toy Box

    […]check below, are some absolutely unrelated websites to ours, nevertheless, they are most trustworthy sources that we use[…]

  90. 楼主:向喜欢的女孩表白后她为什么会反感我?
    回复:老娘拿你当兄弟,你竟然想上我!