wordpress 二次开发 求源码解析 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 wordpress源码分析说实在本博客的初衷是源自于wordpress这个开源的博客而建立,目的是为了和互联网上的初学者一起来学习PHP编程技术,但在目前为止,通过搜索引擎而访问康盛博客的量实在是太少,也做了一些SEO优化方面的东西,但是关键字“PHP教程”,本来在百度还有个排名(28名左右),到现在百度的算法的改变,致使我等小站,几乎要挂掉了。所以在此,本人还想通过引擎过来的寥寥几人,多多宣传吧,或者把php教程在各位的博客上做个链接吧!比如百度空间,CSDN之类的,那就不胜感激了,同样就会有更多的人看到我为初学者写的PHP教程了。当然从SEO的角度来看,如果大家链接的是康盛博客就没有什么效果了。助人为乐嘛,还有就是大家看了文章之后也留下点什么,也评论下吧,可以帮助大家呀!wordpress源码分析从开始到现在也写了几十篇文章,内容基本上是基于wordpress源码分析而来,但一个知识点可能要学的东西很多,所以wordpress源码在分析这块可能大家都感觉不到了。下面就偶尔来看段代码吧。最近在学PHP面向对象编程方面的知识,这可能通过我的PHP教程目录查看到全部的文章。wordpress 后台登录页面源代码分析:文件:wp-admin/index.php<?php /** * Dashboard Administration Panel * * @package WordPress * @subpackage Administration */ /** Load WordPress Bootstrap */ require_once('admin.php'); /** Load WordPress dashboard API */ require_once(ABSPATH . 'wp-admin/includes/dashboard.php'); wp_dashboard_setup(); wp_enqueue_script( 'dashboard' ); wp_enqueue_script( 'plugin-install' ); wp_enqueue_script( 'media-upload' ); wp_admin_css( 'dashboard' ); wp_admin_css( 'plugin-install' ); add_thickbox(); $title = __('Dashboard'); $parent_file = 'index.php'; require_once('admin-header.php'); $today = current_time('mysql', 1); ?> <div> <?php screen_icon(); ?> <h2><?php echo esc_html( $title ); ?></h2> <div id="dashboard-widgets-wrap"> <?php wp_dashboard(); ?> <div></div> </div><!-- dashboard-widgets-wrap --> </div><!-- wrap --> <?php require(ABSPATH . 'wp-admin/admin-footer.php'); ?> 首先加载了一些文件,在这些文件里大量的函数,你wp_enqueue_script( ‘dashboard’ );wp_enqueue_script( ‘plugin-install’ );之类的就被定义在这些文件里,接着包含头部文件相对应在文件底部包括了admin-footer.php文件,使用了绝对路径,这样在执行速度上要快一些吧。至于其他的代码是页面布局方面的,没什么好说,如果要解释以后吧,会增加CSS教程之类的文章的,问题是大家可得帮我推广下吧,这也算是我为大家尽一把力了。天下苍生也感激你的! wordpress源码分析: query_posts()函数 (wordpress日志调用)将query_posts()放在LOOP之前限定你所需要的条件,wp_query会产生一个新的使用你的参数的SQL查询,而忽视通过URL接收到的其它的参数,如果想不忽略,可以在调用中使用$query_string。query_posts($query_string . "&order=ASC") 设置文章显示的顺序,但是不干扰其余的查询字符串,参数前须有“&”符号其他还有N多用途~~主页不显示某一分类下的日志<?php if (is_home()) { query_posts("cat=-3"); }?>获得特定的日志<?phpquery_posts('p=5');?>获得特定的页面<?phpquery_posts('page_id=7'); //只返回网页7?><?phpquery_posts('pagename=about'); //只返回关于网页?><?phpquery_posts('pagename=parent/child'); // 返回母网页的子网页?>创建所有文章列表,并且提供分页功能<?phpquery_posts($query_string.'posts_per_page=-1');while(have_posts()) { the_post();put your loop here ;}?>==========================================类别 参数显示属于某个类别的文章catcategory_name根据ID显示一个类别只显示来自一个类别ID的文章query_posts('cat=4');根据名称显示一个类别只显示属于某个类别名的文章query_posts('category_name=Staff Home');显示几个类别及ID显示属于几个类别ID的文章query_posts('cat=2,6,17,38');删除某个类别的文章显示所有的文章,但是类别ID前面有个’-’(负号)负号的类被除外。query_posts('cat=-3');删除属于类别3的所有文章。有一个限制性条款:会删除只属于类别3的所有文章。如果一个类别也同时属于其它的类别,这个类别仍然不会被删除。标签参数显示与某个标签相关的文章tag为某个标签提取文章query_posts('tag=cooking');获得拥有任何这样的标签的文章query_posts('tag=bread,baking');获取拥有这三个标签的文章query_posts('tag=bread+baking+recipe');作者参数你也可以根据作者限制文章数目author_name=Harrietauthor=3author_name在 user_nicename区操作, 同时作者 在作者id上操作。文章 & 网页参数返回一篇单独的文章或者一个单独的网页p=1 – 使用文章 ID来显示第一篇文章name=first-post – 使用 post Slug 显示第一篇文章page_id=7pagename=aboutshowposts=1 (你可以使用 showposts=3,或者其它的任何数字显示一定数目的文章)由于 模板层级方面的原因, home.php先执行了。这意味这你可以编写一个home.php,home.phh调用query_posts()重新得到一个特别的网页并且将那个网页设置为你的首页。没有任何插件或者hacks,你需要运行一个机制,并且显示和维护一个非博客的首页。更有用的方法,可能是利用WP的网页功能并且为你的首页使用这个功能。你可以将”关于网页”设置为entry point或者设置为站点的末页。你可能执行一些更动态的步骤,设置一个自定义网页,显示最近的评论,文章,类别,存档。请看看下面的例子。时间参数得到某个特别的时间段内发表的文章hour=minute=second=day= – 一个月中的每一天; 显示,例如,十五号发表的所有文章。monthnum=year=网页参数paged=2 -显示使用”以前发表的文章”链接时,通常在网页2上显示的文章。posts_per_page=10 -每个网页显示的文章数目;-1这个值,会显示所有的文章。order=ASC -按时间顺序显示文章,以相反的顺序显示DESC(默认)Offset 参数你不能转移或者忽视一个或者更多的原始文章,这些文章一般是你的query同时使用offset参数收集到的。下面的函数会显示(1)最近的5篇文章query_posts('showposts=5&offset=1');根据参数排序根据这个区给得到的文章排序orderby=authororderby=dateorderby=categoryorderby=titleorderby=modifiedorderby=modifiedorderby=menu_orderorderby=parentorderby=IDorderby=rand同时考虑”ASC”或者的”DESC”的排序参数联合参数你可能从上面的例子中注意到,你使用一个&(&符号)将参数组合在一起,像:query_posts('cat=3&year=2004');类别13,关于当前月份显示在主页上的文章:if (is_home()) {query_posts ($query_string . '&cat=13&monthnum=' . date('n',current_time('timestamp'))); }在2.3版本中,这个参数组合会返回属于类别1同时属于类别3的文章,只显示两篇(2)文章,根据标题,按降序排列:query_posts(array('category__and'=>array(1,3),'showposts'=>2,'orderby'=>title,'order'=>DESC));在2.3和2.5版本中,你可能期待下面的内容,返回属于类别1并且标签为”苹果”的所有文章query_posts('cat=1&tag=apples');一个bug阻止这个运行。请看看Ticket #5433,一个工作区要搜索几个使用+的标签query_posts('cat=1&tag=apples+apples');对于先前的查询,这个会产生期待的结果。注意使用’cat=1&tag=apples+oranges’能够产生期待的结果。 走进wordpress 源码分析之一wordpress启动后,第一个文件是根目录下的index.php.这个index.php里面代码不多,除了注释,仅仅两行代码第一句代码定义了一个常量’WP_USE_THEMES’为真define('WP_USE_THEMES', true);第二句代码装载WordPress环境和模板require('./wp-blog-header.php');稍详细分析一下:从’WP_USE_THEMES’名字可看出来它的含义应是表明使用主题。使用搜索工具看到,共出现了3次,wp-admin\includes\upgrade.php(1625行):wp-includes\template-loader.php(6行)wp-includes\template-loader.php(21行))具体作用到时再将。 有没有类似haozip.com或者coolrar.com 费了几天时间,终于完成网站的列表页 客户端化,,嘎嘎~~~ 向熟悉phpwind 论坛的朋友 求救一些问题 请求高手解决(怎么把这样的数组转换为JSON) 跪求 javascript encodeURL() 是如何编码的? 斑竹求教一个阿帕奇rewrite问题 php算法问题 寻成熟可用的php语言的OA系统(或工作流系统) 利用PHP实现页面跳转同时POST传参,请路过大神指教 thinkphp 3.2 多表查询 Mantis邮件不能发的问题,高手请进 1次对php防注入补丁的分析
说实在本博客的初衷是源自于wordpress这个开源的博客而建立,目的是为了和互联网上的初学者一起来学习PHP编程技术,但在目前为止,通过搜索引擎而访问康盛博客的量实在是太少,也做了一些SEO优化方面的东西,但是关键字“PHP教程”,本来在百度还有个排名(28名左右),到现在百度的算法的改变,致使我等小站,几乎要挂掉了。所以在此,本人还想通过引擎过来的寥寥几人,多多宣传吧,或者把php教程在各位的博客上做个链接吧!比如百度空间,CSDN之类的,那就不胜感激了,同样就会有更多的人看到我为初学者写的PHP教程了。当然从SEO的角度来看,如果大家链接的是康盛博客就没有什么效果了。助人为乐嘛,还有就是大家看了文章之后也留下点什么,也评论下吧,可以帮助大家呀!wordpress源码分析从开始到现在也写了几十篇文章,内容基本上是基于wordpress源码分析而来,但一个知识点可能要学的东西很多,所以wordpress源码在分析这块可能大家都感觉不到了。下面就偶尔来看段代码吧。最近在学PHP面向对象编程方面的知识,这可能通过我的PHP教程目录查看到全部的文章。wordpress 后台登录页面源代码分析:文件:wp-admin/index.php
<?php
/**
* Dashboard Administration Panel
*
* @package WordPress
* @subpackage Administration
*/
/** Load WordPress Bootstrap */
require_once('admin.php');
/** Load WordPress dashboard API */
require_once(ABSPATH . 'wp-admin/includes/dashboard.php');
wp_dashboard_setup();
wp_enqueue_script( 'dashboard' );
wp_enqueue_script( 'plugin-install' );
wp_enqueue_script( 'media-upload' );
wp_admin_css( 'dashboard' );
wp_admin_css( 'plugin-install' );
add_thickbox();
$title = __('Dashboard');
$parent_file = 'index.php';
require_once('admin-header.php');
$today = current_time('mysql', 1);
?>
<div>
<?php screen_icon(); ?>
<h2><?php echo esc_html( $title ); ?></h2>
<div id="dashboard-widgets-wrap">
<?php wp_dashboard(); ?>
<div></div>
</div><!-- dashboard-widgets-wrap -->
</div><!-- wrap -->
<?php require(ABSPATH . 'wp-admin/admin-footer.php'); ?>
首先加载了一些文件,在这些文件里大量的函数,你wp_enqueue_script( ‘dashboard’ );wp_enqueue_script( ‘plugin-install’ );之类的就被定义在这些文件里,接着包含头部文件相对应在文件底部包括了admin-footer.php文件,使用了绝对路径,这样在执行速度上要快一些吧。至于其他的代码是页面布局方面的,没什么好说,如果要解释以后吧,会增加CSS教程之类的文章的,问题是大家可得帮我推广下吧,这也算是我为大家尽一把力了。天下苍生也感激你的!
将query_posts()放在LOOP之前限定你所需要的条件,wp_query会产生一个新的使用你的参数的SQL查询,而忽视通过URL接收到的其它的参数,如果想不忽略,可以在调用中使用$query_string。
query_posts($query_string . "&order=ASC")
设置文章显示的顺序,但是不干扰其余的查询字符串,参数前须有“&”符号
其他还有N多用途~~
主页不显示某一分类下的日志
<?php
if (is_home()) {
query_posts("cat=-3");
}
?>
获得特定的日志
<?php
query_posts('p=5');
?>
获得特定的页面
<?php
query_posts('page_id=7'); //只返回网页7
?>
<?php
query_posts('pagename=about'); //只返回关于网页
?>
<?php
query_posts('pagename=parent/child'); // 返回母网页的子网页
?>
创建所有文章列表,并且提供分页功能
<?php
query_posts($query_string.'posts_per_page=-1');
while(have_posts()) { the_post();
put your loop here ;
}
?>
==========================================
类别 参数
显示属于某个类别的文章
cat
category_name
根据ID显示一个类别
只显示来自一个类别ID的文章
query_posts('cat=4');
根据名称显示一个类别
只显示属于某个类别名的文章
query_posts('category_name=Staff Home');
显示几个类别及ID
显示属于几个类别ID的文章
query_posts('cat=2,6,17,38');
删除某个类别的文章
显示所有的文章,但是类别ID前面有个’-’(负号)负号的类被除外。
query_posts('cat=-3');
删除属于类别3的所有文章。有一个限制性条款:会删除只属于类别3的所有文章。如果一个类别也同时属于其它的类别,这个类别仍然不会被删除。
标签参数
显示与某个标签相关的文章
tag
为某个标签提取文章
query_posts('tag=cooking');
获得拥有任何这样的标签的文章
query_posts('tag=bread,baking');
获取拥有这三个标签的文章
query_posts('tag=bread+baking+recipe');
作者参数
你也可以根据作者限制文章数目
author_name=Harriet
author=3
author_name在 user_nicename区操作, 同时作者 在作者id上操作。
文章 & 网页参数
返回一篇单独的文章或者一个单独的网页
p=1 – 使用文章 ID来显示第一篇文章
name=first-post – 使用 post Slug 显示第一篇文章
page_id=7
pagename=about
showposts=1 (你可以使用 showposts=3,或者其它的任何数字显示一定数目的文章)
由于 模板层级方面的原因, home.php先执行了。这意味这你可以编写一个home.php,home.phh调用query_posts()重新得到一个特别的网页并且将那个网页设置为你的首页。没有任何插件或者hacks,你需要运行一个机制,并且显示和维护一个非博客的首页。
更有用的方法,可能是利用WP的网页功能并且为你的首页使用这个功能。你可以将”关于网页”设置为entry point或者设置为站点的末页。你可能执行一些更动态的步骤,设置一个自定义网页,显示最近的评论,文章,类别,存档。请看看下面的例子。
时间参数
得到某个特别的时间段内发表的文章
hour=
minute=
second=
day= – 一个月中的每一天; 显示,例如,十五号发表的所有文章。
monthnum=
year=
网页参数
paged=2 -显示使用”以前发表的文章”链接时,通常在网页2上显示的文章。
posts_per_page=10 -每个网页显示的文章数目;-1这个值,会显示所有的文章。
order=ASC -按时间顺序显示文章,以相反的顺序显示DESC(默认)
Offset 参数
你不能转移或者忽视一个或者更多的原始文章,这些文章一般是你的query同时使用offset参数收集到的。
下面的函数会显示(1)最近的5篇文章
query_posts('showposts=5&offset=1');
根据参数排序
根据这个区给得到的文章排序
orderby=author
orderby=date
orderby=category
orderby=title
orderby=modified
orderby=modified
orderby=menu_order
orderby=parent
orderby=ID
orderby=rand
同时考虑”ASC”或者的”DESC”的排序参数
联合参数
你可能从上面的例子中注意到,你使用一个&(&符号)将参数组合在一起,像:
query_posts('cat=3&year=2004');
类别13,关于当前月份显示在主页上的文章:
if (is_home()) {
query_posts ($query_string . '&cat=13&monthnum=' . date('n',current_time('timestamp'))); }
在2.3版本中,这个参数组合会返回属于类别1同时属于类别3的文章,只显示两篇(2)文章,根据标题,按降序排列:
query_posts(array('category__and'=>array(1,3),'showposts'=>2,'orderby'=>title,'order'=>DESC));
在2.3和2.5版本中,你可能期待下面的内容,返回属于类别1并且标签为”苹果”的所有文章
query_posts('cat=1&tag=apples');
一个bug阻止这个运行。请看看Ticket #5433,一个工作区要搜索几个使用+的标签
query_posts('cat=1&tag=apples+apples');
对于先前的查询,这个会产生期待的结果。注意使用’cat=1&tag=apples+oranges’能够产生期待的结果。
第一句代码定义了一个常量’WP_USE_THEMES’为真define('WP_USE_THEMES', true);
第二句代码装载WordPress环境和模板require('./wp-blog-header.php');
稍详细分析一下:
从’WP_USE_THEMES’名字可看出来它的含义应是表明使用主题。
使用搜索工具看到,共出现了3次,
wp-admin\includes\upgrade.php(1625行):
wp-includes\template-loader.php(6行)
wp-includes\template-loader.php(21行))
具体作用到时再将。