Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

zh-cn:使用 WordPress 的常见问题

返回到常见问题解答页面

Contents

WordPress管理

我可以把日志链接中的/index.php?p=76改成日志标题吗?

参见:

如何判断是否有mod_rewrite文件?

可以用PHP的info函数来获取你的服务器信息:

  • 将以下内容复制到一个新打开的记事本或BBEdit文件中:
<?php phpinfo(); ?>
  • 保存为info.php
  • 将文件上传到服务器,在浏览器中访问该文件(www.example.com/info.php

以上操作会给出php版本信息和mod_rewrite信息。

info.php文件返回的页面中列出了PHP安装的具体信息。我们可以在apache页头下已加载模块中查看mod_rewrite是否列在其中。


为什么WordPress不给注册用户发送Email?

为什么新用户在后台注册,WordPress没有给用户发送包含注册信息的Email?是不是WordPress程序的问题?其实这样的问题大多数是有你所使用的主机引起的。

为什么你的WordPress无法发送Email中介绍了更多这方面的内容。

如何更改文件和文件夹权限?

参见:

版本号为什么不出现在周期序列中?

WordPress加强版的版本号并不依照严格的数字编号(在测试发布版则是字母编号)顺序,这是因为加强版反映的是已有版本的改进和完善。例如,WP 1.2是对WP 1.0的重大修改(60%的代码被修改),与此同时WP 1.1就被“忽略”了。

如何开启永久链接,怎样处理永久链接错误?

参见:

用户级别的作用是什么,不同的用户权限有何不同?

参见:

近来的WordPress新版本用角色和权限代替了用户级别的概念。

wp-config.php文件的644权限是否包含了共享服务器上所有其他用户的用户名和密码?

这是将PHP设置在服务器上的一个缺点。如果之前使用了MovableType,那么suexec就可能会对Perl进行设置,于是Movable Type成为根用户。这样PHP的角色就成了web服务器用户,其属性至少为444。phpsuexec功能可用,但很多虚拟主机都不使用这一功能。

然而在如今的共享主机上,这已经不再是个问题。这是因为即使文件是所有人都可读的,但每个账户都设置了一个“牢固的门”,将其他用户挡在门外。我们可以利用open_basedir修改PHP的权限,阻止其他用户修改PHP脚本以访问我们的文件。如果仍然担心权限问题,可以联系虚拟主机商,了解他们的保护措施。

如何使用户登录后重定向到博客首页?

如果你会更改代码(手把手教你更改),以下文章可以给你带来很大的帮助: WordPress登陆之后返回登陆前的页面

另外可以使用插件帮你解决这个问题,安装插件From where you came,如果用户在博客首页点击登录,登录成功后会被重定向到该首页。

怎样修改文件权限以使自己能用模板编辑器编辑这些文件?

参见:

怎样防止我的图片被其它网站盗用?

可以用.htaccess文件来保护图片不被链接到其它网站(即盗链)。盗链严重消耗我们的带宽,一旦有人直接链接到我们网站上的图片,我们的带宽就会流失。

学会分析网站原始访问日志 防盗链中介绍了更多这方面的内容。

A List Apart's Smarter Image Hotlinking Prevention中介绍了更为复杂具体的阻止盗链的方法。

怎样用phpMyAdmin来备份并还原WordPress数据库?

参见:

怎样阻止评论轰炸?

评论轰炸指的是大量评论(通常都是垃圾评论)在一个很短的时期内发布到同一个网站上。 Mark GhoshComment flood prevention-a really simple solution以及Comment flood prevention hack中提到了一个阻止评论轰炸的方法,用户可以自己设定评论发布的时间间隔,防止有人过于频繁地发布连续性评论。

WordPress防范垃圾评论的简单方法(无插件) 中介绍了如何防范凶猛的英文垃圾评论。大多数中文博客中,90%以上的垃圾评论都是英文评论,通过使用该方法可以有效阻止垃圾评论。

下面给出了代码修改的复本(适用于WP 1.2):

在wp-comments-post.php中(各个评论之间),添加以下代码:

// Simple flood-protection
$lasttime = $wpdb->get_var("SELECT comment_date FROM $tablecomments ORDER BY comment_date DESC LIMIT 1″);
if (!empty($lasttime)) {
$time_lastcomment= mysql2date(’U', $lasttime);
$time_newcomment= mysql2date(’U', $now);
if (($time_newcomment - $time_lastcomment) < 300)
die( __(’Sorry, this blog only allows a new comment once every 300 seconds. If you really want to write a comment,
just wait a few and hit refresh on this page. Chances are you tried to add a comment about halfway between 0 and 300 seconds.   
Comment flooders are annoying. Thank you for being patient.’) );
}

为什么删除不了未分类分类目录?

WordPress后台管理菜单的分类选项下,所有# of Posts值为非零的分类目录都不可被删除。未分类分类目录下可能也有几篇文章,但所有页面都被划分在未分类下。因此即使未分类下没有任何文章,# of Post中也将所有页面包含在内。

WordPress默认分类无法被删除,即使分类下没有任何内容,但用户可以在WordPress后台设置菜单下的撰写选项中指定文章或链接的默认文章分类目录和默认链接分类目录。

为什么在编辑页面时没有页面模板选项?

撰写或编辑页面时,如果没有页面模板选项,可能是因为模板文件结构不当。如果有页面相对应且可用的页面模板框,那么主题中至少需要有一个模板文件的开头部分具有如下结构:

<?php
/*
Template Name: Links
*/
?>

上面这个例子来自WordPress的默认主题Default的wp-content/themes/default/links.php文件,因此要将代码中的Links替换成自己需要的目标名称。

Note: 有时为了使模板选择出现,不得不将当前主题转换到WordPress的Default主题,等选择完毕后再转回之前使用的主题!

参见:

页面模板

怎样创建一个静态首页,让日志显示在一个名为blog的页面上?

选择WordPress为内容发布系统时,我们可能会希望展示给读者一个静态主页,然后在一个叫做Blog的页面上显示我们撰写的文章。为了达到这种效果,需要执行以下操作:

  • 新建一个页面,用“My Front Page(我的主页)”作为页面标题。而页面的正文部分,自然就可以输入希望显示在主页上的内容(如果希望显示某篇日志,请参考下面的示例)。
  • 新建一个页面,用“blog”作为页面标题。不需要在该页面的content字段里输入任何内容。
  • 在[Administration_Panels|管理界面]] > 设置菜单 > 阅读选项下,将首页显示设定为一个静态页面,之后将My Front Page选为主页,Blog文章页

如果希望进一步定制主页,可以创建一个模板,设计模板以符合自己的需要:

  • 根据模板层级中的介绍,选择用于显示页面的模板(如page.php或index.php)
  • 将模板复制到myfront.php中。使用WordPress 主题Default的用户则需将wp-content/themes/default/page.php复制到wp-content/themes/default/myfront.php
  • 管理 > 界面外观菜单 > 编辑选项中,编辑myfront.php并将该文件的开始部分由:
<?php
/**
 * @package WordPress
 * @subpackage Default_Theme
 */

更改为:

<?php
/*
Template Name: MyFront
*/
?>
  • 之后在管理 > 页面 > 编辑选项中访问名为Front的页面,将模板设为MyFront。
  • 完成以上操作并能够正常运行后,就可以将myfront.php修改成自己希望的样式了。
  • OK,大功告成!


如果希望在'静态主页'上显示某篇日志而不是页面内容,可以用下面这个例子作为'MyFront'页面模板:
<?php
/*
Template Name: MyFront
*/
?>

<?php get_header(); ?>

	<div id="content" class="narrowcolumn">

<?php

query_posts('p=1'); //set p=x where x is post id of post you want to see or use query_posts('cat=1&showposts=1); to show one post from Category 1
	 if (have_posts()) : ?>

		<?php while (have_posts()) : the_post(); ?>

			<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
				<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
				<small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>

				<div class="entry">

					<?php	the_content('Read the rest of this entry »'); ?>
				</div>
				

				<p class="postmetadata"><?php the_tags('Tags: ', ', ', '<br />'); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?>  <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>
			</div>
					
		<?php endwhile; ?>

		<div class="navigation">
			<div class="alignleft"><?php next_posts_link('« Older Entries') ?></div>
			<div class="alignright"><?php previous_posts_link('Newer Entries »') ?></div>
		</div>

	<?php else : ?>

		<h2 class="center">Not Found</h2>
		<p class="center">Sorry, but you are looking for something that isn't here.</p>
		<?php get_search_form(); ?>

	<?php endif; ?>

	</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

参见:

如何确定文章,页面,分类,标签,链接,链接分类以及用户的ID?

有些时候我们需要知道特定文章,页面,分类,标签,链接,链接分类以及用户的ID。用下面的几种方法可以取得相应的ID:

  • 在浏览器状态栏上察看ID:
  1. 从管理面版打开相关的'编辑'页面。如果是察看文章的,那就是文章->编辑,页面的话就是页面->编辑,分类的话则是文章->分类。
  2. 将鼠标移动到所需要ID的'项目'上, 页面的话则移动到标题上, 分类则移动到分类名称上。
  3. 察看浏览器底部状态栏,可以看到在行结尾包括类似于"post=123"或者"cat_ID=67"的内容。这时,123就是页面ID,67则是分类ID。
  • 安装插件:
  1. 安装并且激活Reveal IDs for WP AdminSimply Show IDs
  2. 查看每个项目的ID。

WordPress配置

怎样更改日期/时间的显示方式?

参见:

怎样管理人们在我博客中的评论?

See:

讨论选项的作用是?

参见:

如何安装插件?

参见:

将一篇日志划分到多个分类下时,怎样更改各分类的显示方式?

要更改日志分类的显示方式,请打开index.php文件,找到<div class meta>。我们会看到以下代码: <?php the_category() ?> 在括号( )和引号内添加或修改内容,使之显示自己期望的样式。

如果希望用逗号隔开各分类,新标签应为:

<?php the_category(',') ?>

如果希望用箭头隔开分类,新标签应为:

<?php the_category(' > ') ?>

如果希望用项目符号隔开各分类,标签应为:

<?php the_category(' &bull; ') ?>

而用竖线( | )隔开各分类的标签则应为:

<?php the_category(' | ') ?>

尽情发挥自己的创意,让分类的显示方式与众不同。

为什么所有评论都需要经过审核?

如果不希望所有评论都要经过审核才能发表,请查看管理面板设置菜单下的讨论选项,确保审核所有评论复选框没有被选中。如果该复选框被选中,所有评论都会被发送到待审核队列,等待管理用户审核。在当一条评论有X个或更多超链接时放入等待审核队列中的空白位置上填入一个大于零的数字。如果空白部分留空或数值小于零,所有带有链接的评论都将被审核。如果“审核所有评论”复选框没有被选中且链接审核值大于零,但仍然会出现垃圾评论,这可能是因为评论垃圾词列表的各个垃圾词之间出现了空行、标点符号或单个字母等。评论垃圾词列表中各个词之间应该用空格隔开,并且每个词都应该占据一行位置。以上都设置完毕后,升级已安装的反垃圾插件。如果仍然不能解决问题,逐个禁用插件,找出罪魁祸首,然后联系插件作者寻求帮助。

怎样阻止其他人在评论中使用HTML?

如果你想禁用评论中的所有HTML代码,可以参考: WordPress转义评论内容,防止恶意代码

如果你想允许部分HTML,可以在wp-includes文件夹下的kses.php文件中设置是否可以在评论中使用HTML标签。

在文本编辑器中打开kses.php文件,找到文件最上方的HTML标签列表。每个HTML标签都单独成行,构成一个合法标签的PHP数组。以//开始的标签行或被标注或被禁用,因此这些标签实际上指明了评论中不允许出现的HTML标签。

为了阻止人们在评论中使用HTML,可编辑kses.php文件,在列表相应标签行的开始部分添加//,使之按自己的意志接收或禁止特定HTML标签。如果不希望任何HTML标签出现在评论中,可标注所有允许HTML标签的标签行。完成修改时记住保存文件。

注意:不标注HTML标签,直接删除自己不需要的标签行也可以达到同样的效果,但删除前可保留标签列表以便将来再次激活。

怎样禁止所有评论?

首先,在管理界面的设置菜单的讨论>选项下,取消允许人们发表新文章的评论的选中状态。但这只是禁止了人们对将来的文章进行评论。要完全禁止所有评论,就必须要在编辑文章 子面板中编辑过去的每篇文章,取消允许评论的选中状态。或者可以在shell账号的命令行中或用phpMyAdmin执行以下 MySQL语句:UPDATE wp_posts SET comment_status="closed";

如果目标是永久性禁止评论,还需要删除wp-comments-post.php文件。

怎样禁止trackback和pingback?

首先,在管理界面的设置菜单的讨论>选项下,取消接收来自外部博客的引用通告(trackback和pingback)的选中状态。但这只是禁止了人们对将来的文章使用引用通告。要完全禁止所有引用通告,就必须要在“编辑文章”子面板中编辑过去的每篇文章,取消允许引用通告的选中状态。或者可以在shell账号的命令行中或用PhpMyAdmin执行以下 MySQL语句:UPDATE wp_posts SET ping_status="closed";

如果目标是永久性禁止引用通告,还需要删除wp-trackback.php文件。

怎样禁用RSS或其它聚合订阅服务?

删除wp-atom.php, wp-commentsrss2.php, wp-feed.php, wp-rdf.php, wp-rss.php, and wp-rss2.php文件以禁用RSS等聚合订阅服务。

但上述方法可能只适用于WordPress早期版本!在新版本中,直到我们将 wp-includes/feed-*.php文件也删除后,聚合订阅服务才彻底停止工作。这时请求订阅将会返回一个错误信息,方式有些不妥,但确实有效。

怎样更改网站管理员名称?

在WordPress管理面板的用户菜单下用户->配置选项中可更改网站管理员昵称。但在管理面板中无法完成对网站用户名的更改。更改网站用户名必须直接在MySQL数据库中进行,但由于网站用户名曝光的次数并不多,因此我们不推荐更改网站用户名。

参见:

如何确定上传图片时的绝对路径?

absolutepath.zip可以帮助用户确定网页的绝对路径。下载并解压该压缩文件,将文件通过FTP上传到页面/图片/文件夹所在位置,之后在浏览器中访问该文件—— http://www.example.com/images/absolutepath.php

更改博客外观需要修改哪些文件?

下列文件影响到博客的对外显示样式,我们可以通过管理面板中模板选项中的内置编辑器来修改这些文件:

   * index.php
     该文件决定博客内容整体布局。
   * style.css
     该文件决定博客的样式和外观。
   * wp-comments.php
     该文件决定用户提交的评论和trackback以及评论提交框的样式。
   * wp-comments-popup.php
     当用户需使用弹出式评论窗口时可使用该文件(默认情况下弹出式评论功能被关闭)。

我可以使用弹出式评论吗?

根据不同的WordPress版本用不同方式激活弹出式评论功能。

在WordPress 2.0的默认(Default)主题中

header.php文件中的:

<?php comments_popup_script(); ?>

上方添加以下代码:

<?php wp_head(); ?>

例:

<?php comments_popup_script(); ?>
<?php wp_head(); ?>
</head>

在WordPress 2.0的主题Classic中

header.php文件中找到以下代码(第21行):

<?php //comments_popup_script(); // off by default ?>

然后删除前面的注释标记,将之改为:

<?php comments_popup_script(); // off by default ?>

在WordPress 1.5的Default主题中

header.php文件中添加:

<?php comments_popup_script(); // off by default ?>

下方添加以下代码:

<?php wp_get_archives('type=monthly&format=link'); ?>

例:

<?php wp_get_archives('type=monthly&format=link'); ?>
<?php comments_popup_script(); // off by default ?>
<?php wp_head(); ?>

在WordPress 1.5的Classic主题中

header.php中找到以下代码行:

<?php //comments_popup_script(); // off by default ?>

将之替换为

<?php comments_popup_script(); // off by default ?>

WordPress1.2版本

index.php中找到以下代码:

<?php //comments_popup_script(); // off by default ?>

将之替换为

<?php comments_popup_script(); // off by default ?>

怎样上传图片?

要允许图片上传到网站::

在管理面板中进入设置菜单的选项->杂项

  • 选中允许文件上传选项
  • 点击界面上方的主菜单,选择上传.
  • Wordpress 2.0版中,打开Write -> Write Post或者Write -> Write Page,然后使用文件上传接口。

我可以更改WordPress Database Plugin插件存放备份的位置吗?

目前(自WordPress2.0起)WordPress Database Plugin插件将备份保存在wp-content/backup-xxxxxx(xxxxxx是一个任意生成的数列)文件夹中。要更改备份的存放位置,需要更改wp-db-backup.php文件。

在WordPress Database Plugin 1.7版中,可以将wp-db-backup.php文件第22行的:

define('WP_BACKUP_DIR', 'wp-content/backup-' . $rand);

改为:

define('WP_BACKUP_DIR', 'mydir/mysubdir');

WordPress修改

我可以修改表情吗?

参见:

怎样编辑文件?

参见:

什么是The Loop?

参见:

怎样更改日志的URL结构?

参见:

怎样在Windows服务器上更改日志的URL结构?

参见:

怎样用WordPress模板标签来更改博客显示内容?

参见:

怎样将所有链接都在新窗口中打开?

主题的header.php模板文件的<head>部分添加以下内容:

<base target="_blank" />

参见:

怎样在RSS订阅中添加图片?

参见:

如何停止我自己的评论也发送邮件通知?

WordPress version 1.2 This will stop WP from sending you a mail if the email address you used when you posted the comment was the same as the email address for the author of the post (which is the address the notification email gets sent to). This applies to v1.2 / 1.2.1 code ONLY.

In functions.php change the following line:

if ( == $user->user_email) return false; // If there's no email to send the comment to

to

if ( == $user->user_email || $comment->comment_author_email == $user->user_email) return false; // If there's no email to send the comment to

关闭评论功能后,博客上会显示评论被关闭,怎样将它显示为其它内容?

关闭评论功能:

WordPress version 1.2

wp-includes/template-functions-comment.php第58行,找到'Comments Off'

WordPress version 1.3

wp-includes/template-functions-comment.php第98行,找到'Comments Off'

WordPress version 2.5

wp-icludes/comment-template.php第720行,找到'Comments Off',将值设置为$none( comments_popup_link函数中)。

用密码保护某篇日志后,怎样更改该日志的显示信息?

具体请见wp-includes/template-functions-post.php文件的第19行。

怎样设置评论中允许使用特定HTML标签?

WordPress1.2之前的版本

If you would like to override the $allowedtags variable in kses.php you may do so in your my-hacks.php file, provided you add the following code after you set up the $allowedtags array.

define('CUSTOM_TAGS', true);

如何添加高级检索功能?

参见:

关于WordPress日志

怎样上传图片并用在日志中?

在WordPress近期版本中

用户编辑日志时,可通过新日志编辑框上方的"上传/插入"按钮或"添加媒体"按钮为日志添加图片(参见图片和附件的使用)。可以在设置菜单的杂项选项中设定图片的上传路径。

  • 进入管理面板>设置>杂项
    • 确定设置无误,如文件默认上传路径wp-content/uploads
    • 不要忘了选择是否希望以年-月目录形式整理上传内容
在一些比较老的版本中:

作如下设置允许图片上传:

  • 接下去拉到顶部的主菜单,点击上传

参考下列文章了解如何设置文章内图片的文字环绕效果:

参见:

什么是Pingback?

参见:

什么是trackback?

参见:

怎样查找日志的永久链接?

参见:

我可以使用桌面博客软件吗?

参见:

可以通过电子邮件写博客吗?

参见:

关于垃圾评论

怎样阻止垃圾评论?

参见:

关于垃圾评论的更多信息

参见:

需要列出的评论垃圾词有哪些?

参见:

为什么所有评论都需要经过审核?

如果本来不需要审核的评论现在也被发送到审核队列,这可能是管理面板>设置>讨论中的常见垃圾评论用语列表的问题。列表中可能出现了单个字符,也可能出现空行或多余空格。删除这些字符、空行或空格。

右击垃圾评论用语框,“全选”并复制到记事本中,在记事本中检查垃圾评论用语的错误。

在常见垃圾评论用语列表中加入垃圾插件后,查找错误变得更不容易了,多个空行却容易被忽略。记事本会简化检查过程。

请仔细检查 :)

导入和导出

怎样导入容量超大的WordPress WXR文件?

如果WordPress导出的WordPress WXR文件、XML文件容量过大而不能导入,可以试试以下方法。

  • 放宽PHP脚本可能消耗的内存限制。注意:如果使用共享虚拟主机,需要向虚拟主机商申请增加该容量。
  1. php.ini中放宽内存限制(如memory_limit = 64M ;)。大多数虚拟主机不允许此项操作。
  2. 通过.htaccess放宽内存限制(如php_value memory_limit 64M)。大多数虚拟主机不允许此项操作。
  3. wp-config.php中放宽内存限制(如(define('WP_MEMORY_LIMIT', '64MB');)。
  • 延长PHP脚本能够运行的最大时间限制。注意:如果使用共享虚拟主机,需要向虚拟主机商申请增加该容量。
  1. php.ini中延长该时间限制(如max_execution_time = 600 ;)。大多数虚拟主机不允许此项操作。
  • 设置更高的PHP上传文件大小限制。注意:如果使用共享虚拟主机,需要向虚拟主机商申请增加该容量。
  1. php.ini中增加容量(如upload_max_filesize = 64M ;post_max_size = 64M ;)。大多数虚拟主机不允许此项操作。
  2. 通过.htaccess增加容量(如php_value upload_max_filesize 64Mphp_value post_max_size = 64M)。大多数虚拟主机不允许此项操作。
  3. 通过wp-config.php中的ini_set来增加PHP上传文件容量。请联系虚拟主机商增加该容量。
  • Gzip压缩文件。在一些虚拟主机中,以Gzip形式压缩的文件会在后台自动解压,甚至WordPress也注意不到Gzip文件与其它文件的不同之处。这样就减小了文件容量,使之在最大上传容量范围内。
  1. 在Windows中,用7Zip为wxr文件生成一个gz压缩文件。
  2. 在Linux中可使用gzip命令行。
  3. 确保生成的文件后缀在上传前为".gz"。
  4. 由于该方法很大程度上取决于虚拟主机的配置,因此并不一定能够生效。如果该方法无效,可尝试其他方法。
  • 将各个日志中的数据分别存放在不同文件中并将页头页脚信息复制到各个文件,使WordPress WXR文件分散成多个小文件。
1. 每个文件的页头信息都是
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:wp="http://wordpress.org/export/1.0/"
>
<channel>
including all info like category, tags, etc to just before the first  <item>
2. 文件的页脚信息都是
</channel>
</rss>
3. 在页头和页脚信息之间加入以<item>开始</item>结尾的日志,然后查看生成的XML文件容量是否小于等于2MB。掌握诀窍了吧?
4. 按照惯例,为防止意外情况发生,导入新XML文件前,请备份被导入博客(导入文件的目的地)的数据库资料并导出该博客的XML文件。

参见:

怎样导入另一个WordPress博客中的链接?

从另一个WordPress博客中导入链接(博客链接)其实非常简单。假设现在有一个存储了大量链接的“旧”博客,还有一个需要被导入链接的新博客。

  • 访问http://旧博客名称.com/wp-links-opml.php。用“另存为”保存输出结果,之后在管理面板>工具>导入>链接表中导入保存的文件。

或者

  • 在新博客的管理面板>工具>导入>链接表中的“指定一个OPML URL”中输入http://www.旧博客名称.com/wp- links-opml.php。


返回到常见问题解答页面