吵吵   2011-08-18  阅读:4,242

wordpress中调用日志页面我想大多数人熟悉的是hile(have_posts()) : the_post();即我们的wp主循环,本文不讨论这个主循环,我们只是来看看,除了用这个方法来来调用函数如the_titile等诸如此类的函数来输出我们的文章标题或者他信息外。我们还有另外一个方法,即我们的post全局变量。


post全局变量包括了wp中posts数据库中的所有数据,但是post只是一条记录。所以如果要输出所有的话,应该是$posts变量,我们可以看看$posts来自于哪里。在wp-db.php中,我们找到了
/**
* WordPress Posts table
*
* @since 1.5.0
* @access public
* @var string
*/
var $posts;
从接下来的代码中我们可以看到$posts这个数组其实代表的是mysql_query()函数返回值。那么我们回头去看数据库中的字段了,相应的字段名输出的即是数据库中的值。
来张数据库图片看看:

看完之后,明白我们如果想要利用posts来输出文章相关信息的话,只要直接$post->ID就ok了。以下是post类的一些成员变量。(注:我这里找了半天也没找到定义post类的php代码在哪里,以后再加吧。)
ID
(integer) The post ID 整数 文章ID
post_author
(integer) The post author’s ID 整数 文章作者ID
post_date
(string) The datetime of the post (YYYY-MM-DD HH:MM:SS) 文章发表时间
post_date_gmt
(string) The GMT datetime of the post (YYYY-MM-DD HH:MM:SS) 文章发表的GMT时间
post_content
(string) The post’s contents 文章内容
post_title
(string) The post’s title 文章标题
post_category
(integer) The post category’s ID. Note that this will always be 0 (zero) from wordpress 2.1 onwards. To determine a post’s category or categories, use get_the_category(). 文章属于的分类
post_excerpt
(string) The post excerpt 文章概述
post_status
(string) The post status (publish|pending|draft|private|static|object|attachment|inherit|future|trash) 文章发布状态
comment_status
(string) The comment status (open|closed|registered_only) 文章评论状态
ping_status
(string) The pingback/trackback status (open|closed) pingback状态
post_password
(string) The post password 文章访问密码
post_name
(string) The post’s URL slug  这里有些是文章的名称,有些就是id号加什么的,我也不懂
to_ping
(string) URLs to be pinged
pinged
(string) URLs already pinged
post_modified
(string) The last modified datetime of the post (YYYY-MM-DD HH:MM:SS) 更改时间
post_modified_gmt
(string) The last modified GMT datetime of the post (YYYY-MM-DD HH:MM:SS) 更改GMT时间
post_content_filtered
(string)
post_parent 父文章
(integer) The parent post’s ID (for attachments, etc)
guid  这个挺重要,是文章链接地址
(string) A link to the post. Note: One cannot rely upon the GUID to be the permalink (as it previously was in pre-2.5), Nor can you expect it to be a valid link to the post. It’s merely a unique identifier, which so happens to be a link to the post at present.
menu_order
(integer)
post_type 文章类型,有能是page,即页面
(string) (post|page|attachment)
post_mime_type
(string) Mime Type (for attachments, etc)
comment_count 评论总数
(integer) Number of comments

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

14条回应:“wordpress中post类的成员变量”

  1. 流氓兔说道:

    这些不懂啊!学习了!

  2. 西安SEO说道:

    呵呵,我来了啊

  3. 技术篇,只有支持一下了。完全看不懂。

    欢迎回访我的博客。

  4. 人生感悟说道:

    虽说看不懂,顶顶更SEO

  5. 网站SEO说道:

    好久啊

  6. ixwebhosting说道:

    这篇文章真不错!总结在这里以后查找会方便很多!

  7. yanjie说道:

    感谢博主分享,我最近正在研究这个变量,有一点很不明白,我从网上看到了很多关于$post变量的解释,都是要求要在the_post()之后,或者说在the loop主循环中才可以使用$post这个全局变量。但是在实际过程中,我发现即使在模板网页的最顶端,也就是一开始就是用$post去调用数据也是没问题的,证明在the loop之前,这个变量就已经被赋值。但是这和网上的说法又很矛盾,不知道博主有什么见解,望解惑。

    • 吵吵说道:

      如果是有多篇日志则是$posts,那么¥post就只是第一篇。如果只有一篇则是$post,模板之前早就已经赋值了的$posts,$post只是该数组中的一个,靠循环来改变。

  8. yanjie说道:

    感谢博主的回复,有一个地方我想发表一下不同意见,文中博主说$posts变量是在wp_db.php中,实际中我觉得应该不是,关于全局变量$posts其实应该是在query.php中,属于WP_Query类中的var $posts,因为我在class_wp.php中看到如下一段代码:
    $GLOBALS[‘posts’] = & $wp_query->posts;
    所以,我个人觉得,关于全局变量$posts真正的出身应该是属于WP_Query类,也就是query.php中的。

    • 吵吵说道:

      刚刚看了一下,没错$posts这个全局变量应该是在这里被赋值的,谢谢提醒。

  9. yanjie说道:

    今天看了一天的WP源代码,始终带着很多疑问。
    本人不才,写下一点小笔记:
    http://www.cnblogs.com/yanjieee/archive/2011/10/13/2208920.html
    希望博主如果有空,能看看,帮我解解惑。
    感激不尽。

    • 吵吵说道:

      为什么你研究wordpress不自己搭建一个,非独立博客留言还要登陆,其实没什么可说的,应该用整体眼光来看待了,$posts是一早就出来的,$post是数组中其中一个,靠loop来改变。研究wp应该看看它的整体思想和钩子思想,我觉得这个比较好。

发表评论

电子邮件地址不会被公开。 必填项已用*标注