分类
WordPress教程

WordPress使用自定义字段来显示日志缩略图

下面是实现使用自定义字段来显示日志缩略图的详细步骤:

1. 首先你应该能够上传图片到你的服务器,你可以通过 FTP 工具或者在 WordPress 后台通过其他任何 WordPress 插件上传图片。

2. 在撰写新日志的页面,向下滚动到一个叫做自定义字段(Custom Fields)的地方,点击按钮展开它。

3. 在 Key 字段输入 “image_thumb”,然后在 “Value” 字段输入你刚才上传的图片的 URL。

4. 然后继续你写日志的常规动作,增加标题,输入内容,选择分类,最后发布。

5. 现在打开你当前主题的 index.php 文件,搜索到下面这行:

<?php the_content('Read the rest of this entry &raquo;'); ?>

这上面这行之前添加以下代码:

<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><img src="<?php $values = get_post_custom_values("image_thumb"); echo $values[0]; ?>" alt="<?php the_title(); ?>" /></a>
分类
WordPress教程

WordPress内置模板条件判断函数

<?php if ( is_home() ) { ?>//判断是否首页<?php } ?>
<?php if ( is_single() ) { ?>//判断是否文章页<?php } ?>
<?php if ( is_single('17') ) { ?>//判断是否ID为17的文章页<?php } ?>
<?php if ( is_single('Beef Stew') ) { ?>//判断标题是否为 Beef Stew 的文章页<?php } ?>
<?php if ( comments_open() ) { ?>//当前页是否允许回复<?php } ?>
<?php if ( pings_open() ) { ?>//是否开启 ping<?php } ?>
<?php if ( is_page() ) { ?>//是否是一个页面<?php } ?>
<?php if ( is_category() ) { ?>//判断是否为分类页面<?php } ?>
<?php if ( is_tag() ) { ?>//是否TAG页面;可以用 is_tag('tagname') 判断具体的TAG<?php } ?>
<?php if ( is_author() ) { ?>//是否某个用户的文章;可以加入用户ID,或用户名作为参数<?php } ?>
<?php if ( is_archive() ) { ?>//判断是否存档<?php } ?>
<?php if ( is_search() ) { ?>//判断是否搜索<?php } ?>
<?php if ( is_404() ) { ?>//判断是否404页面<?php } ?>
<?php if ( is_paged() ) { ?>//判断是否翻页<?php } ?>

例如,一个只需要在首页显示的可以用一下语句解决:

<?php if(is_home() && !is_paged()){?>
...
<?php }?>

一个不在首页显示的,例如“最近发表文章”的插件可以加一个

<?php if(!is_home()){?>
// 避免首页内容和插件内容重复。
<?php }?>
分类
WordPress教程

WordPress更换域名及实现301跳转

如果你的博客需要更换域名或地址,备份好你的数据库后,然后进入数据库,在phpmyadmin对应数据库的右边“SQL”那里运行下面SQL语句。

原来的博客地址http://www.koryi.cn,然后想换成http://www.koryi.net。

UPDATE wp_options SET option_value = replace( option_value, 'http://www.koryi.cn', 'http://www.koryi.net) WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace( post_content, 'http://www.koryi.cn', 'http://www.koryi.net) ;
UPDATE wp_posts SET guid = replace( guid, 'http://www.koryi.cn', 'http://www.koryi.net) ;

为了不损失流量跟在搜索引擎中的收录,需要对原来的域名所在的主机进行301跳转。

修改.htaccess文件

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.koryi.net$ [NC]
RewriteRule ^(.*)$ http://www.koryi.net/$1 [L,R=301]

这样子以后访问.cn的所有地址都能够很好地跳转到.net的地址。

分类
WordPress教程

WordPress显示日志里第一张图片

方法一、

1. 将以下这段代码添加到主题functions.php文件内:

function catch_that_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
  $first_img = $matches [1] [0];
  
  if(empty($first_img)){ //Defines a default image
    $first_img = "/images/default.jpg";
   }
  return $first_img;
}

代码解释:post内如果有图片则显示图片,如果没有图片则显示默认图片

2.在loop内调用:

<?php echo catch_that_image() ?>

方法二、

利用一个简单的正则表达式实现,用在CMS主题上,为每一篇文章添加一张缩略图。

<?php
$szPostContent = $post->post_content;
$szSearchPattern = '~<img [^\>]*\ />~'; // 搜索所有符合的图片
preg_match_all( $szSearchPattern, $szPostContent, $aPics );
$iNumberOfPics = count($aPics[0]); // 检查一下至少有一张图片
if ( $iNumberOfPics > 0 ) {
  echo '<div align="center">'.$aPics[0][0].'</div>';
  }
?>

以上这段代码仅显示内容中的第一张图片,如需显示更多,可修改下:

if ( $iNumberOfPics > 0 ) {
  echo '<div align="center">'.$aPics[0][0].'</div>';
};

显示第二张:

echo '<div align="center">'.$aPics[0][1].'</div>';

显示第三张

echo '<div align="center">'.$aPics[0][2].'</div>';
分类
WordPress教程

有用的WordPress的SQL语句

操作前切记要先备份数据库

1.批量删除文章修订

登录phpMyAdmin后执行下面的SQL语句即可批量删除。

DELETE FROM wp_posts WHERE post_type = "revision";

2.批量删除垃圾评论

登录phpMyAdmin后执行下面的SQL语句。

DELETE from wp_comments WHERE comment_approved = '0';

3.修改文章属性

你安装WordPress后,admin账户就创建了,不少人都错误的使用这个帐号来写博客,直到他们认识到,这并不是个人帐号。

解决的方法,每篇文章修改作者属性需要大量的时间,下面的这个SQL语句可以帮你快速完成这个功能。

首先你要找到你正确的用户名,使用下面的SQL语句可以找到你的用户ID号。

SELECT ID, display_name FROM wp_users;

假设这个ID为NEW_AUTHOR_ID,而管理员admin的ID为OLD_AUTHOR_ID,接着,运行下面的SQL语句。

UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;

4.手动重设密码

UPDATE wp_users SET user_pass = MD5('PASSWORD') WHERE wp_users.user_login ='admin' LIMIT 1;

5.更改WordPress的域名

你可能有时候会想要更改你博客的域名,但是WordPress会将你的域名存储在数据库中,因此你要使用下面的SQL语句来修改。

UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldsite.com', 'http://www.newsite.com') WHERE option_name = 'home' OR option_name = 'siteurl';

接着,你还要使用下面的SQL将文章的GUID也进行修改。

UPDATE wp_posts SET guid = replace(guid, 'http://www.oldsite.com','http://www.newsite.com');

最后,使用下面的语句将文章里所有旧域名替换为新域名。

UPDATE wp_posts SET post_content = replace(post_content, 'http://www.oldsite.com', 'http://www.newsite.com');
分类
WordPress教程

3个获取外部RSS Feed的WordPress函数及其应用

一、fetch_rss

首先把rss,php包括进来,输入你想读取的rss feed,下面的条件和循环语句就很简单了。需要自已修改的地方:链接、标题、rss feed,显示文章数,你也可以看看官方详细介绍, http://codex.wordpress.org/Function_Reference/fetch_rss

<?php
include_once(ABSPATH.WPINC.'/rss.php');
$feed = fetch_rss('http://xxx.com/feed');
$items = array_slice($feed->items, 0, 5);
?>
<?php if (!empty($items)) : ?>
<ul>
<?php foreach ($items as $item) : ?>
<li><a href="<?php echo $item['link']; ?>"><?php echo $item['title']; ?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

二、wp_rss

跟上述的差不多,用的是wp_rss,$uri, $num分别输入feed地址和输入文章数目,只需把url,标题,rss feed地址!以下例子是读取博译论最新发表的5篇文章。你也可以参考官方说明, http://codex.wordpress.org/Function_Reference/wp_rss

<?php
include_once(ABSPATH . WPINC . '/rss.php');
wp_rss('http://xxx.com/feed', 5);
?>

三、get_rss

功能wp_rss差不多,只是这一个是以列表形式。你也可以参考官方说明, http://codex.wordpress.org/Function_Reference/get_rss

<?php
require_once(ABSPATH . WPINC . '/rss-functions.php');
echo '<ol>';
get_rss('http://xxx.com/feed');
echo '</ol>';
?>
分类
WordPress教程

WordPress标题字符串截取方法

在function.php加入以下代码

<?
function mu_title($before = '', $after = '', $echo = true) {
  $title = get_the_title();

  if ( strlen($title) == 0 )
    return;
  $title=substr($title,0,5);
  $title = $before . $title . $after;

  if ( $echo )
    echo $title;
  else
    return $title;
}
?>

调用方法: 将

<?php the_title(); ?>

替换为

<?php mu_title(); ?>
分类
WordPress教程

在非WordPress目录调用最新文章和摘要

<?php
require_once('blog/wp-config.php');
function get_recent_posts($no_posts = 6, $before = '+ ', $after = '<br>', $show_pass_post = false, $skip_posts = 0) {
  global $wpdb, $tableposts;
  $request = "SELECT ID, post_title, post_date, post_content FROM $tableposts WHERE post_status = 'publish' ";
  if(!$show_pass_post) {
    $request .= "AND post_password ='' ";
  }
  $request .= "ORDER BY post_date DESC LIMIT $skip_posts, $no_posts";
  $posts = $wpdb->get_results($request);
  $output = '';
  foreach ($posts as $post) {
    $post_title = stripslashes($post->post_title);
    // $post_date = mysql2date('j.m.Y', $post->post_date);
    $permalink = get_permalink($post->ID);
    $post_content = stripslashes($post->post_content);
    $output .= $before . '<a href="' . $permalink . '" rel="bookmark" title="Permanent Link: ' . $post_title . '">' . $post_title . '</a>'. $after;
    $output .= $before . $post_content .$after;
  }
  echo $output;
}

function mul_excerpt ($excerpt) {
  $myexcerpt = substr($excerpt,0,255);
  return utf8_trim($myexcerpt) . '... ';
}
get_recent_posts();
?>
分类
WordPress教程

WordPress首页截断和缩略图的解决办法

实现的效果是(我想很多人也是想实现这样的效果):

1.首页每篇文章可设定字数,整齐的截断

2.首页每篇文章显示一张图片,而文章页不显示该图片

为此有如下几个方案(只想看结果的就可以忽略这部分了):

1.纯用more标签

也就是我以前的做法,这种最简单,但是很难保证首页每篇文章的字数完全一样。而且内容页中也会出现首页的图片。

2.使用mb_strimwidth()函数

这个函数的作用是将一段文字截取一定的物理长度显示,且它最大的优点是会根据”宽度”来截取文字,全角字符宽度为2,半角字符为1,只要我们将截断的宽度设置为偶数,那最后截断输出的内容一定不会有乱码。有些所谓自动截断的插件也是这个原理。

但是,有个问题就是如果截断的位置正好是html标签,那么就会出现问题,比如侧边拦掉到下面去。所以侧边拦的问题有时并不是因为css,而是因为这个。

综上,解决方法是:mb_strimwidth()函数+自定义域

首先,写文章的时候,插入自定义域如下

名称:imgs(自己起的),值:首页显示的图片地址

然后在主题的index.php中放置图片的地方写代码:

<?php if ( get_post_meta($post->ID, 'image', true) ) : ?>
  <?php $image = get_post_meta($post->ID, 'image', true); ?>
  <a href="<?php echo $image; ?>"><img src="<?php echo $image; ?>" /></a>
<?php else: ?>
  <img src="<?php bloginfo('template_directory'); ?>/imgs/title.jpg" />
<?php endif; ?>

其中,title.jpg是放置在主题文件夹下的默认图片,如没有定义图片,就会显示这张。此外,为图片加链接是为了lightbox效果。

然后,把内容部分代码,也就是th_content()或者the_expert()换成如下:

<?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 140,"......"); ?>

其中140是截断的字符数,strip_tags()是去掉html标签。我也想过用strip_tags()的同时排除img标签的做法,但如果内容中有图片,且刚好截断到该图片的时候同样会出现问题。

当然,为了美观,还要为图片定制样式,比如float和边框。

分类
WordPress教程

WordPress文章复制自动加版权信息

编辑themes下的模板文件single.php,在适当的位置加入以下代码即可

<script type="text/javascript">
document.body.oncopy=function(){
  event.returnValue=false;
  var t=document.selection.createRange().text;
  var s="本文来源于<?php bloginfo('name'); ?> <?php echo get_settings('home'); ?> , 原文地址: <?php the_permalink() ?> ";
  clipboardData.setData('Text','\r\n'+t+'\r\n'+s+'\r\n');
}
</script>