自定义WordPress的相关文章函数(related_posts)

今天闲来无事,看到blog的文章内容页面有点单调,
决定写一个获取当前文章相关文章的模块,
看了WordPress文档,没有现成的函数,
看来只有自己写了。

思路:
思路比较简单,就是获取当前文章的所在分类的随机文章

下面直接看代码

下面的源文章是对应所用的主题文件,不同主题有差异

funcitons.php
在公用函数的源文件加上一个自定义related_posts函数

< ?php 
// related posts
function related_posts(){
	global $post;
	$categories = get_the_category($post->ID);
	$cat_id = $categories[0]->term_id;
	$args = array( 'numberposts' => 10, 'offset'=> 1, 'orderby'=>'rand',  'category' => $cat_id );
	$myposts = get_posts( $args );
 
	$related_posts = '<div id="related-posts"><h4>Related Posts</h4><ul>';
	foreach( $myposts as $post ) {
		$related_posts .= '<li><a href="'.get_permalink($post->ID).'" title="'.$post->post_title.'">'.$post->post_title.'</a></li>';
	}
	$related_posts .= '</ul>';
	wp_reset_query(); 
	echo $related_posts;
}
 
?>
</div>

继续阅读

WordPress获取留言列表

作为最优秀的BLOG开源程序
WP有着非常丰富的留言接口

比如说,你要获取最近的留言列表
那你可以用一个很简单的函数就可以获取到
<?php the_widget('WP_Widget_Recent_Comments'); ?>
这个函数一般是WIDGET中使用的,默认是获取最近的五条留言
the_widget(‘WP_Widget_Recent_Comments’, $instance, $args);
其中$instance[‘title’]控制这个WIDGET的标题
$instance[‘nummber’]留言列表的数目,最大为15,默认为5

WP_Widget_Recent_Comments 这个类在 wp-includes/default-widgets.php定义

假如上面的那个函数满足不了你的需求,
那可以使用<?php get_comments($args); ?>函数来获取

默认的参数为:

< ?php $defaults = array(
    'author_email' => ,
    'ID' => ,
    'karma' => ,
    'number' => ,
    'offset' => ,
    'orderby' => ,
    'order' => 'DESC',
    'parent' => ,
    'post_id' => ,
    'status' => ,
    'type' => ,
    'user_id' =>  ); ?>

简单使用例子:
假如你要获取文章ID为15的文章的留言列表,代码应该是这样

< ?php $comments = get_comments('post_id=15'); ?>

具体需求,可以根据传递进去的参数来实现

继续阅读

Fatal error: Cannot redeclare class wpdb解决方法

刚刚出现这个问题

Fatal error: Cannot redeclare class wpdb in 
/home/lokme/domains/le23.com/public_html/wp-content/db.php on line 54

就是DBCache惹的麻烦
靠,不知道搞了什么,把这个插件删除也不行。

GOOGLE一下,原来没几个解决这个问题
还要重装这么麻烦,哎~~~

不过,后来我把wp-content/db.php 文件下来看了一下

其实这个问题就是类重定义了
跑到行53

只要在类前后加上 if (!class_exists(‘wpdb’)){} 就可以了

看源码

53
54
55
56
57
if (!class_exists('wpdb')):
class wpdb {
// ... 
}
endif;

继续阅读

WordPress通用主题下index.php文件中常用函数解释

wordpress通用主题下index.php文件中常用函数解释
下面通一个最简单的代码来说明:

<body>
<div id="header">
    <h1><a href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a></h1>
    <?php bloginfo('description'); ?>
    <!--上面三个函数分别是取出BLOG的链接地址,名称,描述,要了解更多bloginfo()的参数,请看本站的“WordPress的bloginfo(), get_bloginfo()函数详解”-->
</div>
 
<div id="container">
    <?php if(have_posts()): ?><?php while(have_posts()): the_post(); ?>
    <!--have_posts()判断是否存在日志,the_post()用来显示具体日志的函数,只有在存在日志的前提下才会执行-->
        <div class="post">
            <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            <!--the_permalink()为具体一篇日志的链接地址,the_title()为日志的标题-->
            <div class="entry">
                <?php the_content(); ?>
                <!--the_content()为日志的内容-->
                <p class="postmetadata">
                    <?php _e("Filed under:"); ?>  
                    <?php the_category(',') ?> &#8212; 
                    <!--the_category()为日志分类,参数为多个分类的分隔符号-->
                    <?php the_tags(__('Tags: '), ', ', ' &#8212; '); ?> 
                    <!--the_tags()为日志的标签-->
                    <?php the_author() ?> @ <?php the_time() ?>  
                    <!--the_auhor()日志作者,the_time()日志发表时间-->
                    <?php edit_post_link(__('Edit This')); ?>
                    <!--edit_post_link()为日志的编辑链接,只有是管理员或作者的身份才会显示出来-->
                    <?php comments_popup_link(__('Comments (0)'), __('Comments (1)'), __('Comments (%)')); ?>
                    <!--comments_popup_link()为日志的评论-->
                </p>
            </div>
        </div>
    <?php endwhile; ?>
    <?php endif; ?>
</body>

PHP的stdClass使用

今天玩WordPress的时候,里面有一个$wpdb对象直接操作数据函数

< ?php
$myrows = $wpdb->results("SELECT * FROM `wp_users`");
//本来想取出`user_pass`的值的时候,发觉怎么也搞不出来
//然后var_dump一下的时候,发觉:
var_dump($myrows);
/*
array(1) { [0]=> object(stdClass)#3334 (10) { ["ID"]=> string(1) "1" ["user_login"]=> string(5) "admin" ["user_pass"]=> string(34) "$P$BPzv2YwVVhadSL4UarlSqoyna8ju3B." ["user_nicename"]=> string(5) "admin" ["user_email"]=> string(16) "cjinle@gmail.com" ["user_url"]=> string(0) "" ["user_registered"]=> string(19) "2010-05-31 06:57:58" ["user_activation_key"]=> string(0) "" ["user_status"]=> string(1) "0" ["display_name"]=> string(5) "admin" } }
我晕,原来是二维数组,其中第一个还是对象stdClass
stdClass是什么东东呀?手册完全没有,GOOGLE了一下,发觉要这样才能取值出来:
*/
$myrows[0]->user_pass;
 
?>

继续阅读