所有文章
single.php是wordpress文章的模版
如果經常修改主題,或是更新,那就要再次修改single.php
有時候,我們可以透過直接在wordpress的functions.php加入代碼
實現此功能
打開你主題的functions.php
加入下面這段代碼
- //wordpress純代碼,在文章裡面上下放廣告
- function insertAD($content) {
- if(is_single()) {
- $html = '
html語法/廣告代碼/圖片廣告
';//文章開頭廣告 - $content = $html . $content;
- $content.= '
html語法/廣告代碼/圖片廣告
';//文章結尾廣告 - }
- return $content;
- }
- add_filter ('the_content', 'insertAD');
pingbac是當你引用別人的文章或網址,就會發動的功能。
讓對方的伺服器知道。
簡單說,
B寫了一篇文章
A寫了一篇文章評論B文章
A文章中提到B的文章連結
A如果有用pingbac,pingbac發動,就會根據網址傳給伺服器。
這對伺服器而言不是一個好東西。佔用資源。
可以直接從後台設定-->討論 關閉這兩個
|
|
---|
Trackback功能一樣,只是有一些差異。
實際上,在台彎很難很難會使用。所以關閉吧您沒有權限訪問/wp-admin/post.php此服務器上
當您準備發表一個新的頁面,
或修改你WordPress的頁面,
您看到You don't have permission to access /wp-admin/post.php on this server.
譯文:您沒有權限訪問/wp-admin/post.php此服務器上。” 這是一個常見問題,也有一些修正見下文。 一般解決方案 如果是你安裝了新的外掛,可以禁用看看,
如果禁用或刪除外掛,一樣無法解決...。
就打開根目錄的.htaccess
貼入以下代碼就可以囉
[cc lang="php"]這篇不同於以往的教學
之前有
使用.htaccess禁止任何人訪問後台,及禁止別人看你網站目錄
用代碼修改WordPress後台登入網址提高安全性。
此篇是說
當有註冊用戶登入後。並不是管理者。
基於安全性及隱私考量。
只要讓管理者進入後台,其餘角色想訪問後台,皆導向為首頁
那麼你可以用此代碼
[cc lang="php"] //用代碼讓wordpress禁止非管理者進入後台 function disable_redirect_home() { if ( ! current_user_can( 'manage_options' ) && '/wp-admin/admin-ajax.php' != $_SERVER['PHP_SELF'] ) { /*下面home_url()是首頁,你可以根據需求修改網址,比如跳出廣告頁面都可以。*/ wp_redirect( home_url() ); exit; } } add_action('admin_init', 'disable_redirect_home'); [/cc]
第一技巧、wordpress上傳圖片處理JPG圖像壓縮品質
一般來講,wordpress上傳圖片會自動壓縮為90%
如果我們已經把圖片壓縮了,那就可以用代碼關閉此功能
而我們可以調整這個數值
我們可以用這段代碼設定100%品質
- 設定wordpress上傳圖片是100%品質,不再被壓縮
- add_filter('jpeg_quality', function($arg){return 100;});
有些時候,你真的不想都把圖片做同樣的設定。
像置中、連結到圖片網址等等。
總是要不斷調整。我們可以用代碼,修改預設值。
這是一種一勞永逸的作法!
將以下代碼放入functions.php
- add_action( 'after_setup_theme', 'default_attachment_display_settings' );
- function default_attachment_display_settings() {
- update_option( 'image_default_align', 'center' );
- update_option( 'image_default_link_type', 'none' );
- update_option( 'image_default_size', 'full' );
- }
- //現在設定是
- //開啟位置是圖片網址
- //update_option('image_default_link_type','file');
- //位置不是置中,是預設
- //update_option('image_default_align', 'none' );
現在設定是「圖片居中,不帶連結,全尺寸顯示」。
可根據自己的需要,調整以上三個參數,具體參數
請自行參考update_option函數的官方介紹。
這是一篇比較基礎的functions收集。
那也有些代碼是wordpress舊版的,基本上這些代碼是基礎功能,
有需要可以自行去試試看。
我挑了一些放上來。
一樣所有代碼都是開啟主題的functions.php貼入
顯示網站後台的設定,開啟隱藏的管理特性
當你使用這段代碼,你可以發現後台的設定,多出一些選單
[cc lang="php"] // CUSTOM ADMIN MENU LINK FOR ALL SETTINGS function all_settings_link() { add_options_page(__('All Settings'), __('All Settings'), 'administrator', 'options.php'); } add_action('admin_menu', 'all_settings_link'); [/cc]加入自定義jquery
這邊調用google的jquery庫
[cc lang="php"] // even more smart jquery inclusion add_action( 'init', 'jquery_register' ); // register from google and for footer function jquery_register() { if ( !is_admin() ) { wp_deregister_script( 'jquery' ); wp_register_script( 'jquery', ( 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js' ), false, null, true ); wp_enqueue_script( 'jquery' ); } } [/cc]刪除WordPress版本號
[cc lang="php"] // 刪除WordPress版本號 function complete_version_removal() { return ''; } add_filter('the_generator', 'complete_version_removal'); [/cc]刪除垃圾留言評論中的連結
[cc lang="php"] //刪除垃圾留言評論中的連結 // spam & delete links for all versions of wordpress function delete_comment_link($id) { if (current_user_can('edit_post')) { echo '| del '; echo '| spam'; } } [/cc]設定文章發送到RSS的時間
我們發表文章後,發現有錯誤要修改,但是訂閱rss的讀者,已經發送出去了,我們可以延遲幾分鐘
[cc lang="php"] // delay feed update //設定文章發送到RSS的時間< function publish_later_on_feed($where) { global $wpdb; if (is_feed()) { // timestamp in WP-format $now = gmdate('Y-m-d H:i:s'); // value for wait; + device $wait = '10'; // integer // http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff $device = 'MINUTE'; // MINUTE, HOUR, DAY, WEEK, MONTH, YEAR // add SQL-sytax to default $where $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait "; } return $where; } add_filter('posts_where', 'publish_later_on_feed'); [/cc]限制修改修訂版本的數量
有時候我們會有修訂版,但若不設定,就會無止盡的增加
[cc lang="php"] //限制修改修訂版本的數量 if (!defined('wp_POST_REVISIONS')) define('wp_POST_REVISIONS', 5); [/cc]讓搜索結果包括[自定義文章類型]
有時候我們自己「自定義」了文章類型,那麼透過這個方法,可以把字敬意文章類型也在搜尋結果中出現
[cc lang="php"] // 讓搜索結果包括[自定義文章類型] function searchAll( $query ) { if ( $query->is_search ) { $query->set( 'post_type', array( 'site', 'plugin', 'theme', 'person' )); } return $query; } add_filter( 'the_search_query', 'searchAll' ); [/cc]為你的自定義文章類型,為網站主要的RSS提要。
[cc lang="php"] // ADD CUSTOM POST TYPES TO THE DEFAULT RSS FEED function custom_feed_request( $vars ) { if (isset($vars['feed']) && !isset($vars['post_type'])) $vars['post_type'] = array( 'post', 'site', 'plugin', 'theme', 'person' ); return $vars; } add_filter( 'request', 'custom_feed_request' ); [/cc]刪除內置的Wordpress mate box
[cc lang="php"] function remove_post_meta_box() { remove_meta_box('slugdiv', 'post', 'normal'); } add_action('admin_menu', 'remove_post_meta_box'); [/cc]可以自動壓縮jpg圖片大小
[cc lang="php"] //可以自動壓縮jpg圖片大小 function ajx_sharpen_resized_files( $resized_file ) { $image = wp_load_image( $resized_file ); if ( !is_resource( $image ) ) return new wp_Error( 'error_loading_image', $image, $file ); $size = @getimagesize( $resized_file ); if ( !$size ) return new wp_Error('invalid_image', __('Could not read image size'), $file); list($orig_w, $orig_h, $orig_type) = $size; switch ( $orig_type ) { case IMAGETYPE_JPEG: $matrix = array( array(-1, -1, -1), array(-1, 16, -1), array(-1, -1, -1), ); $divisor = array_sum(array_map('array_sum', $matrix)); $offset = 0; imageconvolution($image, $matrix, $divisor, $offset); imagejpeg($image, $resized_file,apply_filters( 'jpeg_quality', 90, 'edit_image' )); break; case IMAGETYPE_PNG: return $resized_file; case IMAGETYPE_GIF: return $resized_file; } return $resized_file; } add_filter('image_make_intermediate_size', 'ajx_sharpen_resized_files',900); [/cc]開啟GZIP壓縮
- //開啟GZIP壓縮
- if(extension_loaded("zlib") && (ini_get("output_handler") != "ob_gzhandler"))
- add_action('wp', create_function('', '@ob_end_clean();@ini_set("zlib.output_compression", 1);'));
刪除不需要控制台(後台)項目
[cc lang="php"] add_action('wp_dashboard_setup', 'my_custom_dashboard_widgets'); function my_custom_dashboard_widgets() { global $wp_meta_boxes; //Right Now - Comments, Posts, Pages at a glance unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); //Recent Comments unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']); //Incoming Links unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']); //Plugins - Popular, New and Recently updated WordPress Plugins unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); //Wordpress Development Blog Feed unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']); //Other WordPress News Feed unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); //Quick Press Form unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']); //Recent Drafts List unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']); } [/cc]取消WP預設外觀的小工具
- // unregister all default WP Widgets
- function unregister_default_wp_widgets() {
- unregister_widget('wp_Widget_Pages');
- unregister_widget('wp_Widget_Calendar');
- unregister_widget('wp_Widget_Archives');
- unregister_widget('wp_Widget_Links');
- unregister_widget('wp_Widget_Meta');
- unregister_widget('wp_Widget_Search');
- unregister_widget('wp_Widget_Text');
- unregister_widget('wp_Widget_Categories');
- unregister_widget('wp_Widget_Recent_Posts');
- unregister_widget('wp_Widget_Recent_Comments');
- unregister_widget('wp_Widget_RSS');
- unregister_widget('wp_Widget_Tag_Cloud');
- }
- add_action('widgets_init', 'unregister_default_wp_widgets', 1);
我這邊提供兩種方法。
也是比較簡單的方法。
雖然有些人是透過修改外掛的方式,達到不靠外掛,也有亮麗的驗證方式。
但常常無法適用於普遍主題。
而現在wordpress主題太多了,用通用的代碼,比較可以簡單實現功能。
這邊我提供兩種方式。
第一種方式「自動生成4位數字」
開啟主題的function.php加入以下代碼
- // ADD: Anti-spam Code
- //自動生成4位數字
- function olo_antispam(){
- if(!is_user_logged_in()){
- //$pcodes = substr(md5(mt_rand(0,99999)),0,4); //驗證碼為英文+數位組合
- $pcodes = substr(mt_rand(0,99999),0,4); //驗證碼為數位組合
- $str = '
class="olo_anti">';
- $str .= '';
- $str .= '"text" size="4" id="subpcodes" name="subpcodes" />';
- $str .= 'class="pcodes">'.$pcodes.'';
- $str .= '"hidden" value="'.$pcodes.'" name="pcodes" />';
- $str .= '';
- echo $str;
- }
- }
- add_action('comment_form', 'olo_antispam', 1, 1);
- function yanzhengma(){
- if ( !is_user_logged_in() ) {
- $pcodes = trim($_POST['pcodes']);
- $subpcodes = trim($_POST['subpcodes']);
- if((($pcodes)!=$subpcodes) || empty($subpcodes)){
- wp_die( __('錯誤!請輸入正確的驗證碼') );
- }
- }
- }
- add_filter('pre_comment_on_post', 'yanzhengma');
第二種方法「數字加法驗證法」
開啟主題的function.php加入以下代碼
- //數字加法驗證法
- add_action('comment_form', 'spam_protection_math', 1, 1);
- function spam_protection_math(){
- //隨便取得兩個亂數, 範圍0~9
- $num1=rand(0,9);
- $num2=rand(0,9);
- //從網頁中的具體內容
- echo "
$num1 + $num2 = ?"
- .""
- .""
- ."";
- }
- function spam_protection_pre($commentdata){
- $sum=$_POST['sum'];//訪客提交的計算結果
- switch($sum){
- //得到正確的計算結果則直接跳出
- case $_POST['num1']+$_POST['num2']:break;
- //未填寫結果時的錯誤訊息
- case null:wp_die('錯誤: 沒有輸入驗證碼,請再驗證碼.');break;
- //計算錯誤時的錯誤訊息
- default:wp_die('錯誤: 驗證碼錯誤,請輸入正確的驗證碼.');
- }
- return $commentdata;
- }
- if($comment_data['comment_type']==''){
- add_filter('pre_comment_on_post','spam_protection_pre');
- }
以我的網站主題為例子,有很好的前端管理。
所以我不需要造訪後台,也要禁止任何人造訪後台。
那我就可以使用.htaccess關閉,並且當有人造訪後台,直接跳轉到指定網址
打開根目錄的.htaccess加入這些代碼
- RewriteCond %{REQUEST_URI} wp-login.php
- RewriteRule .* http://dhamma.com.tw/ [R,L]
這邊你要改成你自己的網站
完成後,再增加這個代碼
禁止別人觀看你網站的目錄
[cc lang="php"] Options -Indexes [/cc]完成後就儲存。
我使用wordpress那麼多主題後,這是我每個主題都會使用的代碼。
沒有為什麼,就是增加一些安全性,同時建立會員網站的話,這也是絕對的必要性。
畢竟會員網站所有的功能都要前端化。
結果一個奇怪的登入頁面,就壞了美感。
我們可以使用此代碼,加入主題的functions.php
一般預設的後台登入網址是
http://dhamma.com.tw/wp-login.php
修改後台登入網址
- //用代碼修改WordPress後台登入網址提高安全性。
- add_action('login_enqueue_scripts','junzibuqi_com_login_location');
- function junzibuqi_com_login_location(){
- /*
- *下面的 xx 和 zz 是自訂的登入網址,我們根據需要進行修改。
- *後面的http://dhamma.com.tw
- 是輸入錯誤的網址後,會跳轉到首頁,可以修改成你的首頁。
- */
- if($_GET['xx'] != 'zz')header('Location: http://dhamma.com.tw');
- }
現在,你的後台登入網址變成
http://dhamma.com.tw/wp-login.php?xx=zz
有一些人的評論或留言,希望只給管理者看到。
那麼你就可以增加這段代碼
讓留言或評論內容,可設定為管理者查看。其他人無法看
- //代碼讓wordpress留言評論可設為私密,僅管理員可查看
- function p_content($atts, $content = null){
- global $comment;
- $author_email = $comment->comment_author_email;
- $parent_email = get_comment_author_email($comment->comment_parent);
- $user = wp_get_current_user();
- $user_id = $user->ID;
- $user_email = $user->user_email;
- if (current_user_can('create_users') || ($user_email == $parent_email && $user_id != 0) || ($author_id != 0 && $author_email == $user_email)){
- return '' . $content . '';
- }else{
- return __('***隱藏內容僅管理員可見***','tinection');
- }
- }
- #將私密評論留言功能設成簡碼
- add_shortcode('p', 'p_content');
- #讓評論內容支持私密留言評論功能簡碼
- add_filter('comment_text', 'do_shortcode');