實(shí)現(xiàn)方法:打開(kāi)主題目錄下的functions.php文件,在最后添加下面代碼:
//文章最后更新時(shí)間
function show_last_updated( $content ) {
$u_time = get_the_time('U');
$u_modified_time = get_the_modified_time('U');
if ($u_modified_time >= $u_time + 86400) {
$updated_date = get_the_modified_time('Y-m-j');
$updated_time = get_the_modified_time('h:s');
$custom_content .= '<p class="last-updated-date">本文于 '. $updated_date . ' '. $updated_time .'更新,部分內(nèi)容具有時(shí)效性,如有失效,請(qǐng)留言。</p>';
}
$custom_content .= $content;
return $custom_content;
}
add_filter( 'the_content', 'show_last_updated' )
如圖所示:
然后在你頁(yè)面樣式文件里加入下面樣式:
.last-updated-date {
background-color: #fffbe5;
border: 1px solid #f5e295;
color: #de9e0e;
border-radius: 6px;
font-size: 14px;
margin-bottom: 20px;
padding: 10px 20px
}
.last-updated-date a {
color: #b98000
}
.last-updated-date a:hover {
color: #926500
}
保存,刷新,結(jié)束。
]]>
最后發(fā)現(xiàn)在主題設(shè)置里面有友鏈,但它是獨(dú)立的,數(shù)據(jù)是空的,不能調(diào)用系統(tǒng)以前已經(jīng)設(shè)置好的友鏈,沒(méi)法,只能找以前的鏈接找回來(lái)。
方法如下:在模板目錄下面functions.php里面添加下面代碼。
add_filter( 'pre_option_link_manager_enabled', '__return_true' );
添加完后后保存,然后再刷新后臺(tái)頁(yè)面,鏈接菜單出來(lái)了。
然后在小工具里面。往首頁(yè)添加在友鏈就可以了。
最后發(fā)現(xiàn),新版本的WORDPRSS也是沒(méi)有這個(gè)鏈接菜單的,友鏈功能默認(rèn)是取消的,但link-manager.php等文件仍然存在,如果直接訪問(wèn)wp-admin/link-manager.php文件,系統(tǒng)會(huì)提示下載Link Manager插件。還要下載插件多麻煩,而且我覺(jué)得原生的鏈接足夠夠用了,如果想用插件就自己去下載,如果不想用插件,就用上述方法添加一段代碼找回友鏈菜單就行了。
]]>下載后,上傳到 /wp-content/plugins/目錄下,解壓,
在后臺(tái)插件管理里面啟用。
在文章發(fā)布窗口就可以看到按鈕了。
直接把復(fù)制到上面框里,確定就行了,有幾十種格式可選。我們用默認(rèn)的就行。
最終效果如下:
]]>只能把文本框里的編輯好的正文復(fù)制一下,然后刷新頁(yè)面,再發(fā)布。在后臺(tái)發(fā)布頁(yè)面,按F12檢查錯(cuò)誤時(shí)發(fā)現(xiàn),瀏覽器出現(xiàn)下面錯(cuò)誤:Uncaught TypeError: Cannot read property 'WordCounter' of undefined
經(jīng)查,導(dǎo)致這些bug的原因在于更新了系統(tǒng)卻沒(méi)有更新語(yǔ)言包。
解決方法:將wp-content目錄下的languages文件夾刪除,
然后刷新后面頁(yè)面,刷新后后臺(tái)會(huì)變成英文界面
然后升級(jí)語(yǔ)言包就可以了。
]]>可以我的網(wǎng)站是偽靜態(tài)的,所以就不想讓它收錄動(dòng)態(tài)頁(yè)面。robots里面加入了禁止抓取這些動(dòng)態(tài)地址和某些路徑,但是蜘蛛依然每天抓取,而且還收錄了!所以只能強(qiáng)制禁止它訪問(wèn)。
把下列代碼加入到服務(wù)器配置文件ROOT后面即可
#### 禁止搜索引擎訪問(wèn)指定文件夾或者路徑 【開(kāi)始】####
#初始化變量為空
set $deny_spider "";
#如果請(qǐng)求地址中含有需要禁止抓取關(guān)鍵詞時(shí),將變量設(shè)置為y:
if ($request_uri ~* "\?replytocom=(\d+)|\?p=(\d+)|/feed|/date|/wp-admin|comment-page-(\d+)|/go") {
set $deny_spider 'y';
}
#如果抓取的UA中含有spider或bot時(shí),繼續(xù)為變量賦值(通過(guò)累加賦值間接實(shí)現(xiàn)nginx的多重條件判斷)
if ($http_user_agent ~* "spider|bot") {
set $deny_spider "${deny_spider}es";
}
#當(dāng)滿足以上2個(gè)條件時(shí),則返回404,符合搜索引擎死鏈標(biāo)準(zhǔn)
if ($deny_spider = 'yes') {
return 403; #如果是刪除已收錄的,則可以返回404
break;
}
#### 禁止搜索引擎訪問(wèn)指定文件夾或者路徑【結(jié)束】 ####
然后測(cè)試一下,動(dòng)態(tài)地址抓取失敗,靜態(tài)地址成功。
還有一種方法就是把代碼直接寫(xiě)進(jìn)當(dāng)前主題頁(yè)的functions.php里面即可。
PHP代碼如下
/*禁止蜘蛛抓取指定路徑代碼*/
ob_start("Deny_Spider_Advanced");
function Deny_Spider_Advanced() {
$UA = $_SERVER['HTTP_USER_AGENT'];
$Request_uri = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
$Spider_UA = '/(spider|bot|)/i'; //定義需要禁止的蜘蛛U(xiǎn)A,一般是spider和bot
//禁止蜘蛛抓取的路徑,可以參考自己的robots內(nèi)容,每個(gè)關(guān)鍵詞用分隔符隔開(kāi),需注意特殊字符的轉(zhuǎn)義
$Deny_path = '/\?replytocom=(\d+)|\?p=(\d+)|\/feed|\/date|\/wp-admin|wp-includes|\/go|comment-page-(\d+)/i';
//如果檢測(cè)到UA為空,可能是采集行為
if(!$UA) {
header("Content-type: text/html; charset=utf-8");
wp_die('請(qǐng)勿采集本站,因?yàn)椴杉恼鹃L(zhǎng)木有小JJ!');
} else {
//如果發(fā)現(xiàn)是蜘蛛,并且抓取路徑匹配到了禁止抓取關(guān)鍵詞則返回404或者403
if(preg_match_all($Spider_UA,$UA) && preg_match_all($Deny_path,$Request_uri)) {
//header('HTTP/1.1 404 Not Found');
//header("status: 404 Not Found");
header('HTTP/1.1 403 Forbidden');
header("status: 403 Forbidden");
}
}
}
寫(xiě)在最后,我在發(fā)布這個(gè)篇文章時(shí),發(fā)現(xiàn)發(fā)布按鈕是灰色不可用的。用控制臺(tái)檢查發(fā)現(xiàn)有錯(cuò)誤:Failed to load resource: the server responded with a status of 403 ()
原來(lái)是上面規(guī)則中訪問(wèn)后臺(tái)目錄會(huì)出現(xiàn)403錯(cuò)誤。把后臺(tái)目錄從上面規(guī)則里刪除即可。
]]>
這樣雖然我的網(wǎng)站沒(méi)有這個(gè)內(nèi)容,但訪問(wèn)過(guò)來(lái)都會(huì)有下面顯示:
最開(kāi)始我想通過(guò)301重定向所有訪問(wèn)地址里面有/?=的來(lái)源搜索自動(dòng)轉(zhuǎn)向網(wǎng)站首頁(yè),這樣就不會(huì)看到這種情況,在寶塔面板試了好久,沒(méi)有成功。只能通過(guò)修改文件實(shí)現(xiàn)了這個(gè)方法,在當(dāng)前主題文件夾里面的functions.php加入下面代碼,然后保存。
/* WordPress搜索結(jié)果中無(wú)內(nèi)容時(shí)自動(dòng)跳轉(zhuǎn)到網(wǎng)站首頁(yè) */
add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
if (is_search()) {
global $wp_query;
if ($wp_query->post_count == 0 && $wp_query->max_num_pages == 0) {
wp_redirect( home_url() );
exit;
}
}
}
這樣,別人點(diǎn)擊這樣的垃圾鏈接的話,就直接跳轉(zhuǎn)到本站首頁(yè)了,如果是搜索正常關(guān)鍵字,則顯示正常搜索頁(yè)。
還有這下面這種方法,無(wú)論有沒(méi)有搜索結(jié)果都自動(dòng)跳轉(zhuǎn)到首頁(yè)(此方法沒(méi)測(cè)試過(guò))
//禁用WordPress前臺(tái)搜索功能
function disable_search( $query, $error = true ) {
if (is_search() && !is_admin()) {
$query->is_search = false;
$query->query_vars['s'] = false;
$query->query['s'] = false;
if ( $error == true )
// 執(zhí)行搜索后顯示的錯(cuò)誤頁(yè)面
$query->is_home = true; //跳轉(zhuǎn)到首頁(yè)
// $query->is_404 = true;//跳轉(zhuǎn)到404頁(yè)
}
}
add_action( 'parse_query', 'disable_search' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );
第三種方法就是把wordpress站內(nèi)搜索直接替換成百度搜索。
代碼:
//wordpress站內(nèi)搜索替換為百度搜索
function wp_use_baidu_search( $wp_query ) {
$s = '';
if (isset($wp_query->query_vars['s'])) {
$s = trim($wp_query->query_vars['s']);
}
if (!$s) { // 空搜索 不進(jìn)行跳轉(zhuǎn)
return;
}
// 獲取當(dāng)前網(wǎng)站域名
$host = strtolower($_SERVER['HTTP_HOST']);
// 使用 baidu
$search_engine = 'https://www.baidu.com/s?ie=UTF-8&wd=';
$query = urlencode($s . ' site:' . $host);
// 進(jìn)行跳 轉(zhuǎn)
wp_redirect($search_engine . $query);
// 不再繼續(xù)
exit;
}
// 加入 替換處理
add_action('parse_query', 'wp_use_baidu_search');
效果如下:
別人點(diǎn)擊收錄的垃圾鏈接就是這樣的。
最開(kāi)始測(cè)試時(shí),搜索英文或者數(shù)字的話,搜索結(jié)果是正常的,但搜索中文的話,在百度搜索的中文被轉(zhuǎn)義了,也就是顯示亂碼。如下圖
找到好久,才找到解決的方法,找到search的相關(guān)代碼(一般在header.php),把里面的
<?php echo home_url('/search/'); ?>
修改為:
<?php echo home_url('/?s='); ?>
如果搜索結(jié)果前面多個(gè)/的話,直接把上面的/去掉就行了。
參考文章:
]]>//wordpress站內(nèi)搜索替換為百度搜索
function wp_use_baidu_search( $wp_query ) {
$s = '';
if (isset($wp_query->query_vars['s'])) {
$s = trim($wp_query->query_vars['s']);
}
if (!$s) { // 空搜索 不進(jìn)行跳轉(zhuǎn)
return;
}
// 獲取當(dāng)前網(wǎng)站域名
$host = strtolower($_SERVER['HTTP_HOST']);
// 使用 baidu
$search_engine = 'https://www.baidu.com/s?ie=UTF-8&wd=';
$query = urlencode($s . ' site:' . $host);
// 進(jìn)行跳 轉(zhuǎn)
wp_redirect($search_engine . $query);
// 不再繼續(xù)
exit;
}
// 加入 替換處理
add_action('parse_query', 'wp_use_baidu_search');
最終效果如下:
如果搜索中文時(shí),結(jié)果顯示亂碼,也就是被轉(zhuǎn)義了,
打開(kāi)search相關(guān)代碼,一般在header.php這個(gè)文件里面,把
<?php echo home_url('/search/'); ?>
修改為:
<?php echo home_url('/?s='); ?>
保存,這樣就能正常搜索中文了。親測(cè)有效!
]]>打開(kāi)當(dāng)前模板文件夾里面的functions.php 文件,加入下面代碼即可
/* WordPress搜索結(jié)果中只有一篇文章時(shí)自動(dòng)打開(kāi)該文章 */
add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
if (is_search()) {
global $wp_query;
if ($wp_query->post_count == 1 && $wp_query->max_num_pages == 1) {
wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
exit;
}
}
}
如果列表里只有一篇文章時(shí),也想讓用戶訪問(wèn)該列表時(shí)自動(dòng)打開(kāi)該文章,打開(kāi)當(dāng)前模板里面的functions.php 文件,加入下面代碼;
/* 分類(lèi)列表里只有一篇文章時(shí)直接跳轉(zhuǎn)到該文章具體頁(yè)面 */
function stf_redirect_to_post(){
global $wp_query;
// If there is one post on archive page
if( is_archive() && $wp_query->post_count == 1 ){
// Setup post data
the_post();
// Get permalink
$post_url = get_permalink();
// Redirect to post page
wp_redirect( $post_url );
}
}
add_action('template_redirect', 'stf_redirect_to_post');
最近網(wǎng)站被人刷的搜索,百度收錄了。別人通過(guò)百度點(diǎn)擊進(jìn)來(lái),是一個(gè)無(wú)搜索內(nèi)容的頁(yè)面,現(xiàn)在我想讓點(diǎn)擊這個(gè)鏈接進(jìn)來(lái)直接轉(zhuǎn)向首頁(yè),綜合上面兩個(gè)段代碼,終于成功了。
/* WordPress搜索結(jié)果中無(wú)內(nèi)容時(shí)自動(dòng)跳轉(zhuǎn)到網(wǎng)站首頁(yè) */
add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
if (is_search()) {
global $wp_query;
if ($wp_query->post_count == 0 && $wp_query->max_num_pages == 0) {
wp_redirect( home_url() );
exit;
}
}
}
但是這段代碼不能和第一段代碼同時(shí)使用,因?yàn)槔锩嬗邢嗤膮?shù),會(huì)出錯(cuò)。
經(jīng)測(cè)試,把兩段代碼混合起來(lái)使用就正常了。也就是當(dāng)搜索結(jié)果只有一條內(nèi)容時(shí),自動(dòng)打開(kāi)該條內(nèi)容頁(yè)面,搜索結(jié)果有N條內(nèi)容時(shí),顯示正常搜索頁(yè)面,搜索結(jié)果無(wú)內(nèi)容時(shí),剛自動(dòng)轉(zhuǎn)向首頁(yè)。
代碼如下:
/* WordPress搜索結(jié)果 */
add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
if (is_search()) {
global $wp_query;
if ($wp_query->post_count == 0 && $wp_query->max_num_pages == 0) {
wp_redirect( home_url() );//搜索結(jié)果沒(méi)內(nèi)容時(shí),自動(dòng)轉(zhuǎn)向首頁(yè)。
exit;
}
if ($wp_query->post_count == 1 && $wp_query->max_num_pages == 1) {
wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );//搜索結(jié)果只有一條時(shí),自動(dòng)打開(kāi)該條內(nèi)容。
exit;
}
}
}
]]>
打開(kāi)wp-admin/includes/post.php
搜索
$posts_per_page = 20;
大約在1053行,把20修改為你需要的數(shù)字 ,比如50,或者100,不要修改太高。太高的話,顯示的是非常慢的。
老版本的wordpress修改方式如下:
1. 打開(kāi)wp-admin/includes/post.php
2. 找到下面這一句
wp("post_type=post&what_to_show=posts$post_status_q&posts_per_page=15&order=$order&orderby=$orderby");
把15改成你想輸出的文章數(shù)即可。
]]>我們?cè)谑褂脀ordpress過(guò)程中,經(jīng)常會(huì)遇到各種各樣的報(bào)錯(cuò),最主要的原因是環(huán)境配置有一定問(wèn)題。根據(jù)官方提供的運(yùn)行環(huán)境看。能完美運(yùn)行wordpress的是以下配置:
PHP 7.3 或是 PHP 7.3+
MySQL 5.6 /5.6+ 或是 MariaDB 10.1 /10.1+
HTTPS 支持
其實(shí)從這里看。配置很容易實(shí)現(xiàn)。但在實(shí)際運(yùn)行中。還有幾個(gè)參數(shù)在影響著wordpress的運(yùn)行。特別是國(guó)外大多數(shù)主題。對(duì)php的配置有一定要求。否則無(wú)法導(dǎo)入演示或無(wú)法導(dǎo)入菜單等等。嚴(yán)重影響我們的用戶體驗(yàn)。下面具體說(shuō)說(shuō):
教程主要是要說(shuō)明如何修改這些的值,上面各個(gè)參數(shù)后面的值為我們推薦值。您可以根據(jù)自己的需要進(jìn)行修改。
修改php.ini。這種方法是最方便的。但只適合有超級(jí)管理權(quán)限的云主機(jī)或是vps。打開(kāi)php.ini文件。查找或是新增如下代碼:
memory_limit = 512M
通過(guò)wp-config.php修改。打開(kāi)您的wp-config.php輸入以下代碼:
define('WP_MEMORY_LIMIT', '512M');
通過(guò).htaccess文件修改。打開(kāi)wordpress目錄下的.htaccess輸入以下代碼:
php_value memory_limit 512M
修改php.ini。這種方法是最方便的。但只適合有超級(jí)管理權(quán)限的云主機(jī)或是vps。打開(kāi)php.ini文件。查找max_input_vars=并把=后面的值改大。一般是3000:
max_input_vars = 3000
通過(guò).htaccess文件修改。打開(kāi)wordpress目錄下的.htaccess輸入以下代碼:
php_value max_input_vars 3000
修改php.ini。這種方法是最方便的。但只適合有超級(jí)管理權(quán)限的云主機(jī)或是vps。打開(kāi)php.ini文件。查找max_execution_time=并把=后面的值改大。一般是3000:
max_execution_time = 3000
通過(guò)wp-config.php修改。打開(kāi)您的wp-config.php輸入以下代碼:
set_time_limit(3000);
通過(guò).htaccess文件修改。打開(kāi)wordpress目錄下的.htaccess輸入以下代碼:
php_value max_execution_time 3000
修改php.ini。這種方法是最方便的。但只適合有超級(jí)管理權(quán)限的云主機(jī)或是vps。打開(kāi)php.ini文件。查找post_max_size=并把=后面的值改大。一般是64M()注意,這個(gè)值是要帶單位的,64M:
post_max_size = 64M
通過(guò).htaccess文件修改。打開(kāi)wordpress目錄下的.htaccess輸入以下代碼:
php_value post_max_size 64M
修改php.ini。這種方法是最方便的。但只適合有超級(jí)管理權(quán)限的云主機(jī)或是vps。打開(kāi)php.ini文件。查找upload_max_size=并把=后面的值改大。一般是64M()注意,這個(gè)值是要帶單位的,64M:
upload_max_filesize = 64M
通過(guò).htaccess文件修改。打開(kāi)wordpress目錄下的.htaccess輸入以下代碼:
php_value upload_max_filesize 64M
通過(guò)以上五個(gè)參數(shù)的修改。你的wordpress及各類(lèi)主題插件基本上就可以完美運(yùn)行了。當(dāng)然。最常用的幾個(gè)參數(shù)設(shè)置。您好可以在您的主題文件中進(jìn)行設(shè)置。把下面的代碼加入您主題的functions.php即可。當(dāng)然其它幾個(gè)參數(shù)就無(wú)能為力了。只能通過(guò)上面的方式修改:
@ini_set( 'upload_max_size' , '64M' );
@ini_set( 'post_max_size', '64M');
@ini_set( 'max_execution_time', '3000' );
]]>