当前位置:首页 > 网站建设 > wordpress > 网站建设 > wordpress调用最新文章、随机文章、最热文章

wordpress调用最新文章、随机文章、最热文章

在上一篇文章wordpress不同页面显示不同侧边栏一文中,技术宅说到了不同页面设置不同的侧边栏的重要性和设置的方法,今天技术宅给大家分享如何在侧边栏中调用最新文章、随机文章和最热文章。

在开始介绍之前,技术宅想说,其实啊,对于wordpress,很多的知识和方法都可以通过这样一种方式学习到。如果需要实现什么功能,第一个是可以用搜索引擎搜索,很多的朋友都是乐意把自己的经验分享给大家的。此外,更好的办法可以是需要什么功能,就下载使用有这个功能的主题,然后稍微阅读下代码,基本都能解决问题。

好了,接下来介绍怎么实现调用最新文章、随机文章、最热文章:

1、wordpress调用最新文章

这个相对来说是最简单的,一句代码即可实现,如下例子:

<div class="widget">
<h2 class="sidebartitle">最近发表</h2>
	<ul >
	<?php get_archives('postbypost', '15'); ?>
	</ul>
</div> 

这个是在侧边栏中,仅仅使用get_archives();函数即可,括号中数字为调用数目,读者可以自行修改。

2、wordpress调用随机文章

这个功能的实现相对来说复杂一点点,而技术宅正在使用的主题中就具有这样的函数,可以肯定的是,这个函数不仅有这个功能,还有更丰富的应用。但是我没有过多研究了,现在把代码和方法分享给大家。

第一步:在自己所用主题的functions.php文件中添加以下代码:

function yg_randomposts_init() {
	if (!function_exists('register_sidebar_widget')) {
		return;
	}

	function yg_randomposts_widget($args) {

		extract($args);
		$options = get_option('yg_randomposts');
		$title = htmlspecialchars($options['title']);
        $limit = intval($options['entries-number']);
        $cats = htmlspecialchars($options['categories']);
		$currentcat = intval($options['currentcat']);
        echo $before_widget.$before_title.$title.$after_title;
        echo "n&lt;ul&gt;n";
         yg_randomposts("limit=$limit&amp;cats=$cats&amp;currentcat=$currentcat");
        echo "&lt;/ul&gt;n";
        echo $after_widget;
	}

	function yg_randomposts_options() {
		$options = get_option('yg_randomposts');
		if (!is_array($options)) {
			$options = array('title' =&gt; 'Random Posts', 'entries-number' =&gt; '10', 'currentcat' =&gt; 0, 'categories' =&gt; '');
			update_option('yg_randomposts', $options);
		}
		if ($_POST['yg-randomposts-submit']) {
        $options['entries-number'] = intval($_POST['yg-randomposts-entries-number']);
        if (($options['entries-number'] &lt; 1) || ($options['entries-number'] &gt; 20)) $options['entries-number'] = 10;
		  $options['title'] = strip_tags(stripslashes($_POST['yg-randomposts-title']));
		  $options['currentcat'] = ($_POST['yg-randomposts-currentcat']) ? 1 : 0;
		  $cats = str_replace(" ", "", strip_tags(stripslashes($_POST['yg-randomposts-categories'])));
		  if (!intval($cats)) $cats='';
          $options['categories'] = $cats;

		  update_option('yg_randomposts', $options);
		}
?&gt;
		&lt;p&gt;
		 &lt;label for="yg-randomposts-title"&gt;
		  &lt;?php _e( 'Title:' ); ?&gt;
		  &lt;input id="yg-randomposts-title" name="yg-randomposts-title" type="text" value="&lt;?php echo htmlspecialchars($options['title']); ?&gt;" /&gt;
		 &lt;/label&gt;
		&lt;/p&gt;
		&lt;p&gt;
		 &lt;label for="yg-randomposts-entries-number"&gt;&lt;?php _e('Number of posts to show:'); ?&gt;
		 &lt;input style="width: 15%; text-align:center; padding: 3px;" id="yg-randomposts-entries-number" name="yg-randomposts-entries-number" type="text" value="&lt;?php echo intval($options['entries-number']); ?&gt;" /&gt;
		&lt;br /&gt;&lt;small&gt;&lt;?php _e('(at most 20)'); ?&gt;&lt;/small&gt;
		 &lt;/label&gt;
		&lt;/p&gt;
        &lt;p&gt;
		 &lt;label for="yg-randomposts-currentcat"&gt;&lt;input type="checkbox"  id="yg-randomposts-currentcat" name="yg-randomposts-currentcat" &lt;?php echo ($options['currentcat'] == 1) ? 'checked="checked"' : '';?&gt; /&gt; &lt;?php _e('Get posts from current category'); ?&gt;&lt;/label&gt;
		&lt;/p&gt;
		&lt;p&gt;
		 &lt;label for="yg-randomposts-categories"&gt;&lt;?php _e('Categories to get posts:'); ?&gt;
		 &lt;input id="yg-randomposts-categories" name="yg-randomposts-categories" type="text" value="&lt;?php echo htmlspecialchars($options['categories']); ?&gt;" /&gt;
		&lt;br /&gt;&lt;small&gt;&lt;?php _e('(Category ids separated with a comma)'); ?&gt;&lt;/small&gt;
		 &lt;/label&gt;
		&lt;/p&gt;
		&lt;input type="hidden" id="yg-randomposts-submit" name="yg-randomposts-submit" value="1" /&gt;

&lt;?php
	}
	// Register Widget
	register_sidebar_widget('Advanced Random Posts', 'yg_randomposts_widget');
	register_widget_control('Advanced Random Posts', 'yg_randomposts_options');
}

function yg_randomposts($args = '') {
    global $wpdb;
	$defaults = array(
		'limit' =&gt; 10, 'cats' =&gt; '', 'currentcat' =&gt; 0
	);
	$args = wp_parse_args( $args, $defaults );
	extract($args);

	$limit = intval($limit);
	$cats = str_replace(" ", "", $cats);
	if (($limit &lt; 1 ) || ($limit &gt; 20)) $limit = 10;
	if (($currentcat) &amp;&amp; (is_category())) {
	 $cats = get_query_var('cat');
	}
	if (($currentcat) &amp;&amp; (is_single())) {
	 $cats = '';
	 foreach (get_the_category() as $categories) {
	   $cats .= $categories-&gt;cat_ID.' ';

	 }
	 $cats = str_replace(" ", ",", trim($cats));
	}
	if (!intval($cats)) $cats='';
	if ($cats == '') $sql = "SELECT id, post_title, post_name FROM $wpdb-&gt;posts WHERE ((post_status='publish') AND (post_type = 'post') AND ($wpdb-&gt;posts.post_password = '')) ORDER BY RAND() LIMIT $limit";
	else $sql="SELECT $wpdb-&gt;posts.id, $wpdb-&gt;posts.post_title FROM $wpdb-&gt;posts, $wpdb-&gt;term_relationships WHERE $wpdb-&gt;posts.post_type = 'post' 
AND $wpdb-&gt;posts.post_status = 'publish' AND $wpdb-&gt;posts.post_password = ''
and $wpdb-&gt;posts.id = $wpdb-&gt;term_relationships.object_id and $wpdb-&gt;term_relationships.term_taxonomy_id in ($cats) 
GROUP BY $wpdb-&gt;posts.id ORDER BY rand(), $wpdb-&gt;posts.post_date desc LIMIT $limit";
    $randomposts = $wpdb-&gt;get_results($sql);
	$postlist = '';
    foreach ($randomposts as $post) {
	  $post_title = htmlspecialchars(stripslashes($post-&gt;post_title));
      $postlist .= "&lt;li&gt;&lt;a href="" . get_permalink($post-&gt;id) . "" title="". $post_title .""&gt;" . $post_title ."&lt;/a&gt;&lt;/li&gt;n";

    }
    echo $postlist;

 }

add_action('plugins_loaded', 'yg_randomposts_init');

第二步:调用随机文章:

&lt;div&gt;
&lt;h2&gt;随机推荐&lt;/h2&gt;
	&lt;ul &gt;
	&lt;?php yg_randomposts('limit=15'); ?&gt;
	&lt;/ul&gt;
&lt;/div&gt;

3、wordpress调用最热文章

这个调用和调用随机文章类似,先要在函数文件中添加代码,之后再进行调用:

functions.php中添加代码如下:

	function show_popular_posts($numberposts=5) {
	global $wpdb;
	$myposts = $wpdb-&gt;get_results("SELECT $wpdb-&gt;posts.post_title, $wpdb-&gt;posts.ID, $wpdb-&gt;posts.post_content FROM $wpdb-&gt;posts WHERE $wpdb-&gt;posts.post_status = 'publish' AND $wpdb-&gt;posts.post_type = 'post' ORDER BY $wpdb-&gt;posts.comment_count DESC LIMIT $numberposts", OBJECT);
	foreach($myposts as $post) {
      ?&gt;

  &lt;li&gt;  &lt;a href="&lt;?php echo get_permalink($post-&gt;ID); ?&gt;"&gt;&lt;?php echo $post-&gt;post_title ?&gt;&lt;/a&gt;
&lt;/li&gt;

      &lt;?php
	}
function yg_randomposts_init() {
	if (!function_exists('register_sidebar_widget')) {
		return;
	}

调用时使用如下代码:

&lt;div&gt;
&lt;h2&gt;热文推荐&lt;/h2&gt;
	&lt;ul &gt;
	&lt;?php show_popular_posts(15,'','',true); ?&gt;
	&lt;/ul&gt;
&lt;/div&gt;

至此,wordpress调用最新文章、随机文章、最热文章完毕。

友荐云推荐
  • «
  • »
  • 作者:
    除非注明,本文原创:技术宅,欢迎转载!转载请以链接形式注明本文地址,谢谢。
    原文链接:http://www.jishuzh.com/web/wordpress调用最新文章、随机文章、最热文章.html

    3 thoughts on “wordpress调用最新文章、随机文章、最热文章

    1. 奥运会

      博主是外国人吗?

    2. web promo

      Thanks for sharing info. Keep up the good work…

    3. webpromo

      Really you have done great job,There are may person searching about that now they will find enough resources by your post,

    评论已关闭.