WordPress使用FAQ

4条评论

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加强版的版本号并不依照严格的数字编号(在测试发布版则是字母编号)顺序,这是因为加强版反映的是已有版本的改进和完善。例如,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脚本以访问我们的文件。如果仍然担心权限问题,可以联系虚拟主机商,了解他们的保护措施。

怎样将在博客首页登录的用户重定向到博客首页?

安装插件From where you came,如果用户在博客首页点击登录,登录成功后会被重定向到该首页。

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

参见:

怎样阻止我的图片被其它网站盗用(利用盗链)?

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

Clockwatchers’ htaccess image guide中介绍了更多这方面的内容。

可以用这个工具查看图片是否得到有效保护,还可以从中得到更多图片保护技巧。

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

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

参见:

怎样阻止评论轰炸?

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

下面给出了代码修改的复本(适用于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替换成自己需要的目标名称。

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

参见:

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

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

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

参见:

WordPress配置

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

参见:

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

讨论选项的作用是?

怎样安装插件?

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

要更改日志分类的显示方式,请打开index.php文件,找到<div class meta>。我们会看到以下代码:

<?php the_category() ?>

在括号()和引号内添加或修改内容,使之显示自己期望的样式。

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

<?php the_category(',') ?>

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

<?php the_category(' > ') ?>

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

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

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

<?php the_category(' | ') ?>

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

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

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

怎样阻止其他人在评论中使用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以及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 wp_head(); ?>

上方添加以下代码:

<?php comments_popup_script(); ?>  

结果类似于:

<?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 wp_get_archives('type=monthly&format=link'); ?>

的下方添加以下代码:

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

结果类似于:

<?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 ?>  

在WordPress 1.2中

在index.php中找到以下代码:

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

将之替换为:

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

怎样上传图片?

要允许图片上传到网站:

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

  • 选中“允许文件上传”选项
    • 如果需要查找绝对路径,请参见上文中的上传图片时怎样确定绝对路径
    • 如果需要更改文件权限,请参考更改文件权限
  • 点击界面上方的主菜单,选择上传

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

目前(自WordPress2.0起)WordPress Database Plugin插件将备份保存在wp-content/backup-xxxxxxxxxxxx是一个任意生成的数列)文件夹中。要更改备份的存放位置,需要更改 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 2.5中

在wp-icludes/comment-template.php文件的第720行中有 'Comments Off' 字样,该字样即变量$none的值(在comments_popup_link函数中)。

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

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

怎样在WordPress博客中添加高级搜索功能?

参见:

关于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中放宽内存限制(如('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 64M与 php_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博客中导入链接(博客链接)其实非常简单。假设现在有一个存储了大量链接的“旧”博客,还有一个需要被导入链接的新博客。

或者