WordPress 3.5 恢复友情链接增加链接管理器的几种方法

升级到WordPress 3.5的朋友可能已经发现了,在WordPress 3.5正式版中去掉了我们常用的链接管理器(Link Manager)功能,用惯了用这个管理友情链接的朋友可能要郁闷了,不过虽然3.5中取消了此功能,但我们还是有办法恢复链接管理器

WordPress 3.5 恢复友情链接方法一、在主题functions.php文件中加入以下代码:

add_filter( ‘pre_option_link_manager_enabled’, ‘__return_true’ );

WordPress 3.5 恢复友情链接方法二、使用“Link Manager”插件开启:(实际上这个插件只有上面一句代码)

http://wordpress.org/extend/plugins/link-manager/

使用方法,请前往“仪表盘” → “插件” → “安装插件”,然后搜索“Link Manager”,来安装由“WordPress”或“nacin”开发的“Link Manager”插件以启用该功能即可。

WordPress不同分类文章调用不同模板样式

WordPress不同分类文章调用不同模板样式。有时候我们希望wordpress的文章页面能每个分类都不一样,但是文章页面是由single.php统一控制的,这样如果希望WordPress不同分类文章调用不同模板样式,一个single.php是不够用的,所以往往我们需要新建single-post.php和single-pro.php,一个显示新闻,一个显示产品,各有各的样式。但wordpress能实现这种效果吗?答案是肯定的,而具体的功能实现如下:

WORDPRESS读取一篇文章,首先调用single.php,所以我们在single.php加入条件判断语句,最常用的是in_category()函数,可以判断文章在哪个分类下,调用哪个single模板,但in_category()有局限性,不能判断子分类和子分类以下的分类,如产品分类,底下可能有数十种分类,而in_category()只能单一写死分类ID。

下面就是具体实现代码有需要的童鞋就拿走吧。代码本人已亲测可放心使用,哈。。。

<?php
if ( in_category('post') ) {
include(TEMPLATEPATH . '/single-post.php');
}
// elseif 在一次判断 想在加判断复制代码
elseif ( in_category('plugin') ) { // pro 为category的别名
include(TEMPLATEPATH . '/single-plugin.php');
}
// elseif 结束
else {
include(TEMPLATEPATH . '/single-all.php');
}
?>

in_category(‘post’) 里面的post还可以支持ID,即写出 in_category(’3′)。

补充一下:使用方法,把上面这段代码放在single.php,然后分别多建一个single-post.php、single-plugin.php(名字自己定)和一个常用通用的single-all.php 来作为判断,如果分类post就显示single-post.php和分类plugin就显示single-plugin.php否则就显示常用通用的sinlge-all.php。

资料来源:http://www.6ird.com/archives/90.html

WordPress设置只让注册用户才能浏览特定内容的技巧

有时候想在网站分享点好东西,但是又不想让全世界的人都看见,WordPress 目前的设置中,最复杂的设置是只能把文章设置为密码保护,然后通过别的途径把密码告诉用户才能浏览,这个方法比较麻烦,那有没简单的例如只让注册用户即可浏览特定内容的方法呢?下面就分享个如何通过 WordPress 自定义字段完美解决只让注册用户即可浏览特定内容的技巧。

我们增加一个自定义字段:user_only,如果这个值不为零,这这篇日志或者页面是只能给注册用户浏览,然后通过 the_content 来控制内容显示,这样就能简单的并且灵活设置具体到哪篇文章或者页面是只能注册用户浏览。详细代码如下:

<?php
/*
Plugin Name: User only
Plugin URI: http://fairyfish.net/m/post-for-user-only/
Description:通过给 user_only 这个自定义字段设置为 true 来设置当前文章仅限于会员浏览。
Author: Denis
Version: 1.0
Author URI: http://wpjam.com
*/
add_filter('the_content', 'post_user_only');
function post_user_only($text){     global $post;          $user_only = get_post_meta($post->ID, 'user_only', true);     if($user_only){         global $user_ID;         if(!$user_ID){             $redirect = get_permalink($post->ID);             $text = '该内容仅限于会员浏览,请<a href="'.wp_login_url($redirect).'">登录</a>!';         }     }     return $text;
}
?>

把上面带复制成一个文件上传到插件目录,激活即可。

资料来源http://fairyfish.net/m/post-for-user-only/

WordPress不同分类显示不同图标的方法

WordPress不同分类显示不同图标的方法。实现此功能的核心问题是,在主循环中能根据分类自动调用不同图标。而利用 get_the_category() 函数获取分类名称的代码:一段获取分类名称,一段获取分类别名。

获取当前分类的名称:

<?php foreach((get_the_category()) as $cat){echo $cat->cat_name;}?>

获取当前分类的别名:

<?php foreach((get_the_category()) as $cat){echo $cat->category_nicename;}?>

有了这两段代码,然后再组装成图片超链接代码。图片可以从主题里的文件夹获取,图片名字可以用分类的别名代替。

全套代码如下:

<a href="<?php bloginfo('url'); ?>/category/<?php foreach((get_the_category()) as $cat){echo $cat->category_nicename;}?>" title="<?php foreach((get_the_category()) as $cat){echo $cat->cat_name;}?>">
	<img src="<?php bloginfo('template_url');?>/images/<?php foreach((get_the_category()) as $cat){echo $cat->category_nicename;}?>.png" />
</a>
资料来源:http://www.mangguo.org/add-category-icon-for-wordpress/

完美实现WordPress用户增加自定义个人资料

完美实现WordPress用户增加自定义个人资料(显示自定义内容)。用wordpress搭建博客的朋友应该都知道,wordpress后台虽然有“我的资料”一栏,并且也可以填写一些个人资料,但是由于wordpress默认的都是一些国内用户不常用的玩意,如AIM、Yahoo IM、Jabber 这些对于国内用户而言基本就是多余。所以我们希望把不常用的删掉,改成常用的新浪微博、腾讯微博等。下面是实现方法。

下面是核心代码,加到主题文件夹functions.php里:

//设置个人资料相关选项
function my_profile( $contactmethods ) {
	$contactmethods['weibo_sina'] = '新浪微博';   //增加
	$contactmethods['weibo_tx'] = '腾讯微博';
	unset($contactmethods['aim']);   //删除
	unset($contactmethods['yim']);
	unset($contactmethods['jabber']);
	return $contactmethods;
}
add_filter('user_contactmethods','my_profile');

这个时候仅仅只是在后台有填写的文本框,实际上一点用都没!我们要的效果是在每篇文章里展示出来,所以要把数据都输出到页面上。

在single.php你觉得合适的位置加代码:

<a href="<?php the_author_meta('weibo_sina'); ?>" target="_blank">新浪微博</a>

但实际使用中,不可能每个作者都有新浪微博,所以有的人这里没有填写是空的。而到了页面上,“新浪微博”四个字还在,但是href里是空的,这就非常不友好了。所以要做个判断。

<?php if (get_the_author_meta('weibo_sina')!=""){ ?>
<?php echo "<a href='" . get_the_author_meta('weibo_sina') . "' target='_blank'>新浪微博</a>"; ?>
<?php } ?>

这里把之前的the_author_meta()换成了get_the_author_meta()来做判断非空,因为the_author_meta()是直接输出,而get_the_author_meta()是有返回值,所以可以作为判断的条件。这样就完美实现WordPress用户增加并显示自定义个人资料了。

个人资料

原作者显示效果

用到的文章:

http://wange.im/diy-profile-in-wordpress.html

http://codex.wordpress.org/Function_Reference/the_author_meta

http://codex.wordpress.org/Function_Reference/get_the_author_meta

资料来源:http://ons.me/378.html 主要为自己搜集备忘。

WordPress主题结构及WordPress页面函数调用

如果你希望对wordpress博客修改或者进行WordPress主题制作。那么熟悉WordPress主题结构以及一些常用的页面函数调用很重要,只有熟悉和掌握了wordpress主题结构后才可以很方便的基于wordpress系统做成各种各样的形式,当然,这还得要求wordpress主题开发人员精通html,PHP,JS,CSS等技术了。

WordPress主题由一系列模板文件组成,每个模板文件控制主题的一部分。无论在博客的哪个个页面上,主题的框架总有一部分是不变的,这是主题的静态部分,它由header.php, sidebar.php 和 footer.php三个文件控制。我们可以修改这些文件,以便检测我们浏览的页面,并显示不同的内容,如在posts页面和page页面显示不同的导航。然而,通常,我们会让静态部分在整个网站上保持一致的风格。

网站外观由下面4个部分的代码控制:

  • header.php
    显示博客头和导航,也包含html代码
  • The Loop
    显示网站主题内容的模板文件称为The Loop(后面会详细介绍)。
  • sidebar.php
    侧边栏由这个文件控制。多侧边栏的主题可以在functions.php中添加控制。
  • footer.php
    网站的页尾和html的关闭标签。

一套完整的WordPress模板应至少具有如下文件:

index.php : 主页模板

archive.php : Archive/Category模板

404.php : Not Found 错误页模板

comments.php : 留言/回复模板

footer.php : Footer模板

header.php : Header模板

sidebar.php : 侧栏模板

page.php : 内容页(Page)模板

single.php : 内容页(Post)模板

searchform.php : 搜索表单模板

search.php : 搜索结果模板

style.css : CSS(样式表)文件

functions.php:Functions.php让我们在WordPress上运行自定义代码,以便更自由的修改主题元素。(这个不是必须的,但是只有有了Functions.php才能方便的扩展其他很多功能)

页面组成

WordPress基本页面有Homepage(index.php控制),Post页面(单独显示一篇完整博客,由single.php控制),独立页面(page.php控制),存档(archive.php等控制),下面分别介绍这几个控制这几个页面的代码文件。

index.php – home

index文件控制博客homepage的外观。默认情况下,index文件通过一个loop来显示最新博客,homepage底部还会由一个查看以前博客的链接。

single.php – individual posts

该文件用于显示读者要查看的特定博客全文。

page.php控制着Wordpress Page(页面,不同与文章posts)的显示。你可以选择去掉边栏或其他元素,或增加一些只有page才有的元素。

WordPress同时允许你创建不同的page模板,用来显示不同类型的page(页面)。创建page模板很简单,你只要拷贝page.php,改个你喜欢的名字,然后在文件顶部添加如下代码:

<?php

/*

Template Name:你命名的页面模板文件名

/*

?>

归档(archives)

archive.php, category.php,tag.php

你可以通过以上的文件来控制各种归档类页面的显示。如果没有归档类页面模板,那么归档页面会使用index.php来做模板;不过,你可以创建一个 archive.php来替代index.php作为归档类页面的模板。如果你创建了category.php,这个文件会替代archives.php 来作为分类页面(categories)的模板。如果你创建了tag.php,这个文件会优先作为标签页面(tag)的模板。

wordpress结构

wordpress模板常用的PHP函数及命令

<?php the_tags(); ?> ; 调用文章标签
<?php get_header(); ?> : 调用Header.php
<?php get_sidebar(); ?> : 调用Sidebar.php
<?php get_footer(); ?> : 调用Footer.php
<?php the_content(); ?> : 显示内容(Post/Page)
<?php if(have_posts()) : ?> : 检查是否存在Post/Page
<?php while(have_posts()) : the_post(); ?> : 如果存在Post/Page则予以显示
<?php endwhile; ?> : While 结束
<?php endif; ?> : If 结束
<?php the_time(’字符串’) ?> : 显示时间,时间格式由“字符串”参数决定
<?php comments_popup_link(); ?> : 正文中的留言链接。如果使用 comments_popup_script() ,则留言会在新窗口中打开
<?php the_title(); ?> : 内容页(Post/Page)标题
<?php the_permalink() ?> : 内容页(Post/Page) Url
<?php the_category(’, ‘) ?> : 特定内容页(Post/Page)所属Category
<?php the_author(); ?> : 作者
<?php the_ID(); ?> : 特定内容页(Post/Page) ID
<?php edit_post_link(); ?> : 如果用户已登录并具有权限,显示编辑链接
<?php get_links_list(); ?> : 显示Blogroll中的链接
<?php comments_template(); ?> : 调用留言/回复模板
<?php wp_list_pages(); ?> : 显示Page列表
<?php wp_list_categories(); ?> : 显示Categories列表
<?php next_post_link(’ %link ‘); ?> : 下一篇文章链接
<?php previous_post_link(’%link’); ?> : 上一篇文章链接
<?php get_calendar(); ?> : 日历
<?php wp_get_archives() ?> : 显示内容存档
<?php posts_nav_link(); ?> : 导航,显示上一篇/下一篇文章链接
<?php include(TEMPLATEPATH . ‘/文件名’); ?> : 嵌入其他文件,可为定制的模板或其他类型文件

基本条件判断Tag

is_home() : 是否为主页
is_single() : 是否为内容页(Post)
is_page() : 是否为内容页(Page)
is_category() : 是否为Category/Archive页
is_tag() : 是否为Tag存档页
is_date() : 是否为指定日期存档页
is_year() : 是否为指定年份存档页
is_month() : 是否为指定月份存档页
is_day() : 是否为指定日存档页
is_time() : 是否为指定时间存档页
is_archive() : 是否为存档页
is_search() : 是否为搜索结果页
is_404() : 是否为 “HTTP 404: Not Found” 错误页
is_paged() : 主页/Category/Archive页是否以多页显示

Header部分常用到的PHP函数

<?php bloginfo(’name’); ?> : 博客名称(Title)
<?php bloginfo(’stylesheet_url’); ?> : CSS文件路径
<?php bloginfo(’pingback_url’); ?> : PingBack Url
<?php bloginfo(’template_url’); ?> : 模板文件路径
<?php bloginfo(’version’); ?> : WordPress版本
<?php bloginfo(’atom_url’); ?> : Atom Url
<?php bloginfo(’rss2_url’); ?> : RSS 2.o Url
<?php bloginfo(’url’); ?> : 博客 Url
<?php bloginfo(’html_type’); ?> : 博客网页Html类型
<?php bloginfo(’charset’); ?> : 博客网页编码
<?php bloginfo(’description’); ?> : 博客描述
<?php wp_title(); ?> : 特定内容页(Post/Page)的标题

与模板相关的其他函数

<?php _e(’Message’); ?> : 输出相应信息
<?php wp_register(); ?> : 显示注册链接
<?php wp_loginout(); ?> : 显示登录/注销链接
<!–next page–> : 将当前内容分页
<!–more–> : 将当前内容截断,以不在主页/目录页显示全部内容
<?php timer_stop(1); ?> : 网页加载时间(秒)
<?php echo get_num_queries(); ?> : 网页加载查询量

为文章图片自动添加到当前文章链接功能(WordPress)

为文章图片自动添加到当前文章链接功能,这标题有点拗口,一下子可能让人不明白啥意思。先解释一下吧,就是当文章中有图片时,自动让图片链接到当前文章页面。本来想找插件来实现,不过找了很久都没有找到这样的插件,倒是找到一段代码。

原来实现文章图片自动添加到当前文章链接功能很简单,只需要通过正则替换文章中的图片,添加链接地址而已。

function auto_post_link($content) {
    global $post;
        $content = preg_replace(‘/<\s*img\s+[^>]*?src\s*=\s*(\’|\")(.*?)\\1[^>]*?\/?\s*>/i’, "<a href=\"".get_permalink()."\" title=\"".$post->post_title."\" ><img src=\"$2\" alt=\"".$post->post_title."\" /></a>", $content);
    return $content;
}
add_filter (‘the_content’, ‘auto_post_link’,0);

将这段代码,贴到主题文件的function.php里就行了,文章的图片,会自动添加当前文章页面的链接了。

另外,随手又加了一个小功能,将文章标签作为关键词,将文章内的关键词自动加上链接,有利于SEO,别人复制的时候,就会留下链接了。在上面的函数里继续添加一段代码即可。

function auto_post_link($content) {
        global $post;
        $content = preg_replace(‘/<\s*img\s+[^>]*?src\s*=\s*(\’|\")(.*?)\\1[^>]*?\/?\s*>/i’, "<a href=\"".get_permalink()."\" title=\"".$post->post_title."\" ><img src=\"$2\" alt=\"".$post->post_title."\" /></a>", $content);
        $posttags = get_the_tags();
     if ($posttags) {
         foreach($posttags as $tag) {
             $link = get_tag_link($tag->term_id);
             $keyword = $tag->name;
               $content = preg_replace(‘\'(?!((<.*?)|(<a.*?)))(‘. $keyword . ‘)(?!(([^<>]*?)>)|([^>]*?</a>))\’s’,'<a href="’.$link.’" title="’.$keyword.’">’.$keyword.'</a>’,$content,2);//最多替换2个重复的词,避免过度SEO
         }
     }
       return $content;
}
add_filter (‘the_content’, ‘auto_post_link’,0);

资料来源:http://zhaokaihua.com/article/405.htm

wordpress随机文章(随机日志)四种实现方法

wordpress随机文章(随机日志)四种实现方法。wordpress添加随机文章可以用插件,也可以用代码实现,不过个人还是比较喜欢用代码来实现,毕竟没有必要单纯为了实现随机文章而安装一个插件(插件多了容易影响网站性能)

wordpress随机文章实现方法一

在function.php中加入如下方法

/**
* 随机文章
*/
function random_posts($posts_num=5,$before='<li>’,$after='</li>’){
    global $wpdb;
    $sql = "SELECT ID, post_title,guid
            FROM $wpdb->posts
            WHERE post_status = ‘publish’ ";
    $sql .= "AND post_title != ” ";
    $sql .= "AND post_password =” ";
    $sql .= "AND post_type = ‘post’ ";
    $sql .= "ORDER BY RAND() LIMIT 0 , $posts_num ";
    $randposts = $wpdb->get_results($sql);
    $output = ”;
    foreach ($randposts as $randpost) {
        $post_title = stripslashes($randpost->post_title);
        $permalink = get_permalink($randpost->ID);
        $output .= $before.'<a href="’
            . $permalink . ‘"  rel="bookmark" title="’;
        $output .= $post_title . ‘">’ . $post_title . ‘</a>’;
        $output .= $after;
    }
    echo $output;
}

在需要显示的地方调用如下代码

<div class="right">
    <h3>随便找点看看!</h3>
    <ul>
        <?php random_posts(); ?>
    </ul>
</div><!– 随机文章 –>

不复杂吧,以上代码不依赖也不影响其他代码。

wordpress随机文章实现方法二

在需要显示的地方直接调用如下代码

<ul>
<?php $rand_posts = get_posts(‘numberposts=5&orderby=rand’);
foreach( $rand_posts as $post ) : ?>
   <li>
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
   </li>
<?php endforeach; ?>
</ul>

wordpress随机文章实现方法三:用query_posts生成随机文章列表

在需要显示的地方直接调用如下代码

<?php
query_posts(array(‘orderby’ => ‘rand’, ‘showposts’ => 2));
if (have_posts()) :
while (have_posts()) : the_post();?>
<a href=”<?php the_permalink() ?>”
    rel=”bookmark”
    title=<?php the_title(); ?>”><?php the_title(); ?></a>&nbsp;
    <?php comments_number(”, ‘(1)’, ‘(%)’); ?>
<?php endwhile;endif; ?>

wordpress随机文章实现方法四:支持在随机文章中显示标题和文章摘要

<?php
query_posts(array(‘orderby’ => ‘rand’, ‘showposts’ => 1));
if (have_posts()) :
while (have_posts()) : the_post();
the_title(); //这行去掉就不显示标题
the_excerpt(); //去掉这个就不显示摘要了
endwhile;
endif; ?>

在wordpress随机文章实现的4种方法中除了第一种方法,其他三种方法中都使用到了,get_posts、the_post等方法,这些方法破坏页面中记录的当前文章的信息,如果使用在页面的最后部分,影响不大,如果在调用的代码后面还有评论等内容,则会导致评论内容调用的是随机到的最后一篇文章的评论。

资料来源:http://www.rainleaves.com/html/1391.html