一般而言,一些主題無法控制文章摘要。
就會變成這樣子
開啟主題的functions.php使用這個代碼後
- //用代碼限制WordPress文章摘要的長度,且自訂摘要後面的[…]
- #限制WordPress摘要長度
- function junzibuqi_com_excerpt_length() {
- #160為摘要長度,可以根據自己需要修改。
- return 160;
- }
- add_filter( 'excerpt_length', 'junzibuqi_com_excerpt_length', 999 );
- function junzibuqi_com_more() {
- #這樣就直接將WordPress摘要的省略號[……]替換成了閱讀閱讀全文。
- return '"' . esc_url(get_permalink()) . '" class="gengduo">' . ' →[ 閱讀全文 ] ← ';
- }
- add_filter('excerpt_more', 'junzibuqi_com_more');
wordpress的媒體庫現在支援很多上傳的格式。
但是我們如果只希望媒體庫,僅接受圖片格式。
我們可以用很簡單的代碼實現這點。
開啟主題的functions.php加入以下代碼就可以囉
- // 讓wordpress媒體庫只能上傳圖片格式
- add_filter('upload_mimes', 'custom_upload_mimes');
- function custom_upload_mimes( $existing_mimes=array() ) {
- $existing_mimes = array('jpg|jpeg|jpe' => 'image/jpeg',
- 'gif' => 'image/gif',
- 'png' => 'image/png',
- 'bmp' => 'image/bmp',
- 'tif|tiff' => 'image/tiff',
- 'ico' => 'image/x-icon');
- return $existing_mimes;
- }
所有文章
如果你想讓某些文章是為了SEO而寫的。
讓搜尋引擎抓爬的,不讓其他人閱讀。
那你可以使用以下代碼,放入主題的functions.php
就會出現這個圖片,勾選之後就ok囉
- // 用代碼讓WordPress的某些文章只給搜尋引擎看
- function ludouseo_add_custom_box() {
- add_meta_box('ludou_se_only', '搜尋引擎專屬', 'ludou_se_only', 'post', 'side', 'low');
- add_meta_box('ludou_se_only', '搜尋引擎專屬', 'ludou_se_only', 'page', 'side', 'low');
- }
- add_action('add_meta_boxes', 'ludouseo_add_custom_box');
- function ludou_se_only() {
- global $post;
- //加入驗證欄位
- wp_nonce_field('ludou_se_only', 'ludou_se_only_nonce');
- $meta_value = get_post_meta($post->ID, 'ludou_se_only', true);
- if($meta_value)
- echo '"ludou-se-only" type="checkbox" checked="checked" value="1" /> SEO專用';
- else
- echo '"ludou-se-only" type="checkbox" value="1" /> SEO專用';
- }
- // 保存選項設置
- function ludouseo_save_postdata($post_id) {
- // 驗證
- if ( !isset( $_POST['ludou_se_only_nonce']))
- return $post_id;
- $nonce = $_POST['ludou_se_only_nonce'];
- // 驗證欄位是否合法
- if (!wp_verify_nonce( $nonce, 'ludou_se_only'))
- return $post_id;
- // 判斷是否自動保存
- if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
- return $post_id;
- // 驗證用戶許可權
- if ('page' == $_POST['post_type']) {
- if ( !current_user_can('edit_page', $post_id))
- return $post_id;
- }
- else {
- if (!current_user_can('edit_post', $post_id))
- return $post_id;
- }
- // 更新設置
- if(!empty($_POST['ludou-se-only']))
- update_post_meta($post_id, 'ludou_se_only', '1');
- else
- delete_post_meta($post_id, 'ludou_se_only');
- }
- add_action('save_post', 'ludouseo_save_postdata');
- function do_ludou_se_only() {
- // 本功能只對文章和頁面有效
- if(is_singular()) {
- global $post;
- $is_robots = 0;
- $ludou_se_only = get_post_meta($post->ID, 'ludou_se_only', true);
- if(!empty($ludou_se_only)) {
- // 下面是搜尋引擎判斷關鍵字陣列
- // 有點簡單,自己優化一下吧
- $bots = array(
- 'spider',
- 'bot',
- 'crawl',
- 'Slurp',
- 'yahoo-blogs',
- 'Yandex',
- 'Yeti',
- 'blogsearch',
- 'ia_archive',
- 'Google'
- );
- $useragent = $_SERVER['HTTP_USER_AGENT'];
- if(!empty($useragent)) {
- foreach ($bots as $lookfor) {
- if (stristr($useragent, $lookfor) !== false) {
- $is_robots = 1;
- break;
- }
- }
- }
- // 如果不是搜尋引擎,就顯示錯誤資訊
- // 已登入的用戶不受影響
- if(!$is_robots && !is_user_logged_in()) {
- wp_die('您無權查看此文!');
- }
- }
- }
- }
- add_action('wp', 'do_ludou_se_only');
已經登入的會員,是可以看到的喔!
我們使用wordpress最小記憶體memory_limit是32M
有很多種可以修改memory_limit的方法
但通常有幾個注意的地方。
如果你是租用虛擬主機,你可以直接請他們幫你做修改。
通常如果他們不願意幫你做修改。
你可以自己修改看看,假如透過以下方法
用.htaccess 來修改memory_limit wordpress方法
這是最好的方法,也是最有效果的方法
因為一般人會說用php.ini來修改
可是這很困難的,一般來講你若是租用虛擬主機,他們很難開放這個php.ini讓你來修改。
我們可以先在根目錄建立一個view-php-info.php檔案
裡面增加這段
[cc lang="php"]
[/cc]
http://你的網址/view-php-info.php
搜尋memory_limit就可以知道你目前的數值是多少
我們可以用.htaccess 來控制php.ini的數值。
當然最壞的可能,他們也控制了.htaccess
讓你使用這段代碼,放入.htaccess 依然無效。
[cc lang="php"] php_value memory_limit 128M [/cc]
那以下的方法,更不會有效果了
修改wordpress的wp-config.php
在裡面增加
- // 正常網頁的記憶體用量上限值
- define( 'WP_MEMORY_LIMIT', '1600M' );
- // 管理介面的記憶體用量上限值
- define( 'WP_MAX_MEMORY_LIMIT', '1600M' );
在第四行、和第六行可以做數值的修改。
這是優化wordpress一個很重要的作法。
設定瀏覽器快取功能(Expires headers),意思就是給你css,js,圖片等文件,設定一個期限。
這什麼意思呢?
利用「遊覽器緩存」配合「你網站的Expires headers(設定過期日期)」
有人第一次到你的網站,會下載所有的內容在他的遊覽器。
當你沒有設定一個「期限」
這個人又來你的網站,遊覽器又會比對這些資料。
如果有一個期限,可以讓遊覽器不需要比對這些資料。
加快了你網站速度。
如何檢測此功能?
使用https://developers.google.com/speed/pagespeed/insights/
檢查「使用瀏覽器快取功能」就可以知道,
具體做法
打開你網站根目錄的.htaccess 貼入以下代碼
[cc lang="php"]有時候你安裝了wordpress,某些因素。
導致你的網域必須要輸入www.你的網域。
那麼可以透過那麼可以透過.htaccess的控制
使不輸入www就能跳轉到你的網域
開啟你根目錄的.htaccess加入此代碼
[cc lang="php"] RewriteEngine On RewriteCond %{HTTP_HOST} ^www.googlo.me$ [NC] RewriteRule ^(.*)$ http://googlo.me/$1 [L,R=301] [/cc]一般來講,媒體庫沒有分類,其實挺亂的。
而且有時候若是按文章分類,文章若很多,真是眼花撩亂。
現在我們有一個很好的代碼,解決這個問題。
開啟你主題的functions.php加入以下代碼
[cc lang="php"] //讓媒體庫也有獨立分類 function ludou_create_media_category() { $args = array( 'label' => '媒體分類', 'hierarchical' => true, 'show_admin_column' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => true, ); register_taxonomy( 'attachment_category', 'attachment', $args ); } add_action( 'init', 'ludou_create_media_category' ); [/cc]其實很多用wordpress的人,總是會忽略wordpress本身的參數設定
其實在後台裡面設定,有很多地方我們可以去留意的
像在「設定>>一般」
可以設定網站標題,網誌描述,是否開放註冊等重要
「設定>>固定網址」
可以選擇文章標題,強化seo等等
「設定>>討論」
這邊可以選擇文章發表後,過多少天禁止留言評論
或者當有人發表留言評論,可以通知作者
其實有蠻多功能,可以一一去了解,那就可以省下很多解決問題的方式
如果你想要讓wordpress的某部分內容,是只有註冊/登入的人才可以看到。
那你可以使用這段代碼。
開啟主題的functions.php加入以下代碼
[cc lang="php"] //用代碼讓wordpress的某部分內容,是只有註冊/登入的人才可以看到 add_shortcode( 'members', 'member_check_shortcode' ); function member_check_shortcode( $atts, $content = null ) { if ( is_user_logged_in() && !is_null( $content ) && !is_feed() ) return $content; return ''; } [/cc]具體調用方式。
在發佈文章內容的時候,切換文字編輯模式,要註冊/登入者可看的短碼
[cc lang="php"] [members]你好,僅有註冊/登入會員可以看到[/members] [/cc] [members]你好,僅有註冊/登入會員可以看到[/members]現在很多人會想建構開放註冊的會員網站。
更希望你網站有發表新文章的時候,可以「自動通知用戶」
那麼這是一個很好的代碼。
打開主題的functions.php,加入以下代碼就可以囉!
當你wordpress網站有發表新文章,就會自動以e-mail通知用戶囉!
[cc lang="php"] //用代碼讓wordpress發表新文章,通知註冊會員 function newPostNotify($post_ID) { if( wp_is_post_revision($post_ID) ) return; global $wpdb; $get_post_info = get_post($post_ID); if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) { // 讀取資料庫,取得所有用戶的email $wp_user_email = $wpdb->get_results("SELECT DISTINCT user_email FROM $wpdb->users"); foreach ( $wp_user_email as $email ) { // 信箱標題 $subject = '真正用wordpress網路賺錢,有新訊息喔'; // 信箱內容 $message = '標題:' . get_permalink($post_ID); // 寄發信箱 wp_mail($email->user_email, $subject, $message); } } } // 一旦WordPress有新文章發佈或文章被修改即刻執行newPostNotify函數 add_action('publish_post', 'newPostNotify'); [/cc]seo沒有很複雜,基本上很簡單。
只是有一些小要點要留意。
就是當留言評論的內容,含有網址或連結時,容易讓「搜尋引擎」的重心,轉向外部連結。
因此我們可以用代碼改變評論留言裡面的內容。
變成這樣http://dhamma.com.tw/?r=http://amitabhabuddhaya.com.tw/
具體做法,開啟主題的functions.php貼入以下代碼
[cc lang="php"] //用代碼重寫wordpress留言評論者的連結網址 add_filter('get_comment_author_link', 'add_redirect_comment_link', 5); add_filter('comment_text', 'add_redirect_comment_link', 99); function add_redirect_comment_link($text = ''){ $text=str_replace('href="', 'href="'.get_option('home').'/?r=', $text); $text=str_replace("href='", "href='".get_option('home')."/?r=", $text); return $text; } add_action('init', 'redirect_comment_link'); function redirect_comment_link(){ $redirect = $_GET['r']; $host = $_SERVER['HTTP_HOST']; if($redirect){ if(strpos($_SERVER['HTTP_REFERER'],get_option('home')) !== false){ header("Location: $redirect#form:$host"); exit; } else { header("Location: $redirect#form:$host"); exit; } } } //讓留言評論網址或連結加入nofollow屬性 add_filter('comment_text', 'auto_nofollow'); function auto_nofollow($content) { //return stripslashes(wp_rel_nofollow($content)); return preg_replace_callback('/]+/', 'auto_nofollow_callback', $content); } function auto_nofollow_callback($matches) { $link = $matches[0]; $site_link = get_bloginfo('url'); if (strpos($link, 'rel') === false) { $link = preg_replace("%(href=S(?!$site_link))%i", 'rel="nofollow" $1', $link); } elseif (preg_match("%href=S(?!$site_link)%i", $link)) { $link = preg_replace('/rel=S(?!nofollow)S*/i', 'rel="nofollow"', $link); } return $link; } [/cc]這個作法非常的簡單喔!
只要將以下的API原碼,貼在適當的位置就可以囉!
舉例,像若你想在每一天文篇的下面增加二維碼
那你就打開主題的single.php
貼在
[cc lang="php"] [/cc] 後面 [cc lang="php"] [/cc]就像這樣子
完成我們一個網站,通常會出現一些版本號。這是可以隱藏的
像下圖,當你搜尋ver的時候會找到像這樣的
http://dhamma.com.tw/wp-content/themes/a/bootstrap/css/bootstrap.min.css?ver=9.4.8
假如你的css或js檔案不常更換的話,一般來講是很少更換,或是不會更換的
那你就用以下代碼放入主題的functions.php
就可以解決css或js版本號一直出現問題
[cc lang="php"] //禁用WordPress資源的版本查詢,實現WordPress的優化 /** Remove Query strings from Static Resources. */ function _remove_script_version( $src ){ $parts = explode( '?', $src ); return $parts[0]; } add_filter( 'script_loader_src', '_remove_script_version', 15, 1 ); add_filter( 'style_loader_src', '_remove_script_version', 15, 1 ); [/cc] 如下圖當搜尋引擎要收錄你網站的訊息時。
範例
大自然整體淨化道場發現你網站裡面有很多外部連結,連結到別人的網站。
那是十分不利的作法。會流失自己的權力。
那也許外掛可以把外部連結轉成內連,但是外掛不是一個很好的作法。
開啟functions.php貼入以下代碼
[cc lang="php"] //用代碼將WordPress文章中的連結自動轉成內部連結,大幅提昇wordpress的搜尋優化 add_filter('the_content','web589_the_content_nofollow',999); function web589_the_content_nofollow($content){ preg_match_all('/href="(http.*?)"/',$content,$matches); if($matches){ foreach($matches[1] as $val){ if( strpos($val,home_url())===false ) $content=str_replace("href="$val"", "rel="nofollow" href="/" . get_bloginfo('wpurl'). "/link?url=" .base64_encode($val). """,$content); } } return $content; } [/cc]ok,接著在網站根目錄,注意,不是主題目錄
網站根目錄新建一個「link」資料夾
在「link」裡面建立「 index.php 」(要編譯成UTF-8碼-檔首無ROM)
在裡面加入以下內容
[cc lang="php"]這樣就完成囉!記得將網址改成你的網址就可以
之前我們有一篇wordpress的文章連結,加入nofollow屬性
現在我們也要讓頁面具有這樣的功能!
可以將代碼貼入主題的functions.php
[cc lang="php"] //用代碼為wordpress頁面及文章的連結自動加上nofollow,優化wordpress的seo add_filter( 'the_content', 'cn_nf_url_parse'); function cn_nf_url_parse( $content ) { $regexp = "這是一篇很棒的教學!
畢竟wordpress的外掛有非常多種。
假如你並不希望你後台的外掛被人看到。
那使用這個代碼就可以隱藏囉!
在你的主題function.php加入以下代碼
如何刪除 WordPress 一級選單
將此部分粘貼到您的代碼片段插件中。注意代碼中的註釋,因為這會告訴你代碼的哪一部分刪除了什麼。所以,如果你想刪除帖子菜單,那麼只需取消註釋並離開這部分。
- function hide_menu() {
- /* 控制台 */
- // remove_menu_page( 'index.php' ); // 控制台 + submenus
- // remove_menu_page( 'about.php' ); // WordPress 選單
- remove_submenu_page( 'index.php', 'update-core.php'); // 更新
- /* 刪除默認選單 */
- remove_menu_page( 'edit-comments.php' ); // 評論
- remove_menu_page( 'tools.php' ); //工具
- remove_menu_page( 'users.php' ); //用戶
- }
- add_action('admin_head', 'hide_menu');
您需要刪除任何與外掛相關的選單,先這樣複製路
怎麼看路徑?
那麼完整的 URL 是 https://yoursite.com/wp-admin/admin.php?page=elementor
抓住最後一部分“elementor”並將其添加到代碼中
如下所示:
- remove_menu_page( 'elementor' );