WordPress代碼教學

wordpress 讓頁面運行 php的作法

使用wordpress架設網站的人。
對設計美感的追求若是很高。
一定不滿足於wordpress死板板的版面。

wordpress Revolution 外掛的php簡碼

 
  1. "home3","home3") ?>

所有文章

純css高亮代碼wordpress

wordpress教學網站,總是會需要使用高亮外掛。
本篇兩個部分,

wordpress純代碼,在文章裡面上下放廣告

single.php是wordpress文章的模版
如果經常修改主題,或是更新,那就要再次修改single.php
有時候,我們可以透過直接在wordpress的functions.php加入代碼
實現此功能
打開你主題的functions.php
加入下面這段代碼
 
 
  1. //wordpress純代碼,在文章裡面上下放廣告   
  2. function insertAD($content) {   
  3. if(is_single()) {   
  4. $html = '

    html語法/廣告代碼/圖片廣告

    ';
    //文章開頭廣告   
  5. $content = $html . $content;   
  6. $content.= '

    html語法/廣告代碼/圖片廣告

    ';
    //文章結尾廣告   
  7. }   
  8. return $content;   
  9. }   
  10. add_filter ('the_content', 'insertAD');   

優化wordpress,關閉Trackback和Pingback,加快伺服器

pingbac是當你引用別人的文章或網址,就會發動的功能。
讓對方的伺服器知道。
簡單說,
B寫了一篇文章
A寫了一篇文章評論B文章
A文章中提到B的文章連結
A如果有用pingbac,pingbac發動,就會根據網址傳給伺服器。
這對伺服器而言不是一個好東西。佔用資源。
可以直接從後台設定-->討論 關閉這兩個
 
預設文章設定
Trackback功能一樣,只是有一些差異。
實際上,在台彎很難很難會使用。所以關閉吧

wordpress教學,代碼處理You don't have permission to access /wp-admin/post.php on this server.

您沒有權限訪問/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"] SecFilterEngine Off SecFilterScanPOST Off [/cc]

用代碼讓wordpress禁止非管理者進入後台

這篇不同於以往的教學
之前有
使用.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上傳圖片格式的秘訣

第一技巧、wordpress上傳圖片處理JPG圖像壓縮品質
一般來講,wordpress上傳圖片會自動壓縮為90%
如果我們已經把圖片壓縮了,那就可以用代碼關閉此功能
而我們可以調整這個數值
我們可以用這段代碼設定100%品質
 
  1. 設定wordpress上傳圖片是100%品質,不再被壓縮    
  2. add_filter('jpeg_quality', function($arg){return 100;});  

代碼實現WordPress文章中插入圖片的預設選項

有些時候,你真的不想都把圖片做同樣的設定。
像置中、連結到圖片網址等等。
總是要不斷調整。我們可以用代碼,修改預設值。
這是一種一勞永逸的作法!
將以下代碼放入functions.php
  1. add_action( 'after_setup_theme', 'default_attachment_display_settings' );
  2. function default_attachment_display_settings() {
  3. update_option( 'image_default_align', 'center' );
  4. update_option( 'image_default_link_type', 'none' );
  5. update_option( 'image_default_size', 'full' );
  6. }
  7. //現在設定是
  8. //開啟位置是圖片網址
  9. //update_option('image_default_link_type','file');
  10. //位置不是置中,是預設
  11. //update_option('image_default_align', 'none' );
現在設定是「圖片居中,不帶連結,全尺寸顯示」。
可根據自己的需要,調整以上三個參數,具體參數
請自行參考update_option函數的官方介紹。

wordpress的functions基礎實用代碼整理

這是一篇比較基礎的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壓縮
  1. //開啟GZIP壓縮
  2.    if(extension_loaded("zlib") && (ini_get("output_handler") != "ob_gzhandler"))
  3.        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預設外觀的小工具
  1. // unregister all default WP Widgets
  2. function unregister_default_wp_widgets() {
  3. unregister_widget('wp_Widget_Pages');
  4. unregister_widget('wp_Widget_Calendar');
  5. unregister_widget('wp_Widget_Archives');
  6. unregister_widget('wp_Widget_Links');
  7. unregister_widget('wp_Widget_Meta');
  8. unregister_widget('wp_Widget_Search');
  9. unregister_widget('wp_Widget_Text');
  10. unregister_widget('wp_Widget_Categories');
  11. unregister_widget('wp_Widget_Recent_Posts');
  12. unregister_widget('wp_Widget_Recent_Comments');
  13. unregister_widget('wp_Widget_RSS');
  14. unregister_widget('wp_Widget_Tag_Cloud');
  15. }
  16. add_action('widgets_init', 'unregister_default_wp_widgets', 1);

用代碼實現wordpress評論留言,wordpress數字驗證,過濾垃圾評論

我這邊提供兩種方法。
也是比較簡單的方法。
雖然有些人是透過修改外掛的方式,達到不靠外掛,也有亮麗的驗證方式。
但常常無法適用於普遍主題。
而現在wordpress主題太多了,用通用的代碼,比較可以簡單實現功能。
這邊我提供兩種方式。
第一種方式「自動生成4位數字」
開啟主題的function.php加入以下代碼
  1. // ADD: Anti-spam Code
  2. //自動生成4位數字
  3. function olo_antispam(){
  4. if(!is_user_logged_in()){
  5. //$pcodes = substr(md5(mt_rand(0,99999)),0,4); //驗證碼為英文+數位組合
  6. $pcodes = substr(mt_rand(0,99999),0,4); //驗證碼為數位組合
  7. $str = 'class="olo_anti">';
  8. $str .= 'for="subpcodes">'.__('自動生成4位數字', 'olo').':';
  9. $str .= '"text" size="4" id="subpcodes" name="subpcodes" />';
  10. $str .= 'class="pcodes">'.$pcodes.'';
  11. $str .= '"hidden" value="'.$pcodes.'" name="pcodes" />';
  12. $str .= '

    ';
  13. echo $str;
  14. }
  15. }
  16. add_action('comment_form', 'olo_antispam', 11);
  17. function yanzhengma(){
  18. if ( !is_user_logged_in() ) {
  19. $pcodes = trim($_POST['pcodes']);
  20. $subpcodes = trim($_POST['subpcodes']);
  21. if((($pcodes)!=$subpcodes) || empty($subpcodes)){
  22. wp_die( __('錯誤!請輸入正確的驗證碼') );
  23. }
  24. }
  25. }
  26. add_filter('pre_comment_on_post', 'yanzhengma');
 
第二種方法「數字加法驗證法」
開啟主題的function.php加入以下代碼
 
  1. //數字加法驗證法
  2. add_action('comment_form', 'spam_protection_math', 11);
  3. function spam_protection_math(){
  4. //隨便取得兩個亂數, 範圍0~9
  5. $num1=rand(0,9);
  6. $num2=rand(0,9);
  7. //從網頁中的具體內容
  8. echo " $num1 + $num2 = ?"
  9. .""
  10. .""
  11. ." 驗證碼

    "
    ;
  12. }
  13. function spam_protection_pre($commentdata){
  14. $sum=$_POST['sum'];//訪客提交的計算結果
  15. switch($sum){
  16. //得到正確的計算結果則直接跳出
  17. case $_POST['num1']+$_POST['num2']:break;
  18. //未填寫結果時的錯誤訊息
  19. case null:wp_die('錯誤: 沒有輸入驗證碼,請再驗證碼.');break;
  20. //計算錯誤時的錯誤訊息
  21. default:wp_die('錯誤: 驗證碼錯誤,請輸入正確的驗證碼.');
  22. }
  23. return $commentdata;
  24. }
  25. if($comment_data['comment_type']==''){
  26. add_filter('pre_comment_on_post','spam_protection_pre');
  27. }

使用.htaccess禁止任何人訪問後台,及禁止別人看你網站目錄

以我的網站主題為例子,有很好的前端管理。
所以我不需要造訪後台,也要禁止任何人造訪後台。
那我就可以使用.htaccess關閉,並且當有人造訪後台,直接跳轉到指定網址
打開根目錄的.htaccess加入這些代碼
  1. RewriteCond %{REQUEST_URI} wp-login.php
  2. RewriteRule .* http://dhamma.com.tw/ [R,L]
這邊你要改成你自己的網站
完成後,再增加這個代碼
禁止別人觀看你網站的目錄
[cc lang="php"] Options -Indexes [/cc]
完成後就儲存。

用代碼修改WordPress後台登入網址提高安全性。

我使用wordpress那麼多主題後,這是我每個主題都會使用的代碼。
沒有為什麼,就是增加一些安全性,同時建立會員網站的話,這也是絕對的必要性。
畢竟會員網站所有的功能都要前端化。
結果一個奇怪的登入頁面,就壞了美感。
我們可以使用此代碼,加入主題的functions.php
一般預設的後台登入網址是
http://dhamma.com.tw/wp-login.php
修改後台登入網址
現在,你的後台登入網址變成
http://dhamma.com.tw/wp-login.php?xx=zz

讓wordpress留言評論框,增加實用工具及自訂簡碼

這是一篇比較高級的教學,如果不想折騰語法,可以使用一些外掛來完成。

代碼讓wordpress留言評論可設為私密,僅管理員可查看

有一些人的評論或留言,希望只給管理者看到。
那麼你就可以增加這段代碼
讓留言或評論內容,可設定為管理者查看。其他人無法看
 
調用作法在留言評論框使用
[p]框內韋私密內容[/p]