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 SETTINGSfunction 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 inclusionadd_action( 'init', 'jquery_register' );// register from google and for footerfunction 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 wordpressfunction 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 FEEDfunction 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 glanceunset($wp_meta_boxes['dashboard'][ 'normal']['core']['dashboard_right_now']);//Recent Commentsunset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);//Incoming Linksunset( $wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);//Plugins - Popular, New and Recently updated WordPress Pluginsunset($wp_meta_boxes['dashboard']['normal'][ 'core']['dashboard_plugins']);//Wordpress Development Blog Feedunset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);//Other WordPress News Feedunset($ wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);//Quick Press Formunset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press' ]);//Recent Drafts Listunset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);}[/c c]
取消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"XXXX/liXXXliXXXXXXXXXXXXXlabel for="subpcodes"XXXXXXXXXXXXXXXXXXXXspan class="number"XXX/spanXXXXXXXXXXXXXXXXXXXXXXXX/labelXXXX/liXXXli class="alt"XXXXXXXXXXXXXinput type="text" size="4" id="subpcodes" name="subpcodes" /XXXX/liXXXliXXXXXXXXXXXXXspan class="pcodes"XXXXXXXXXXXXX/spanXXXX/liXXXli class="alt"XXXXXXXXXXXXXinput type="hidden" value="'.$pcodes.'" name="pcodes" />';
  8. $str .= '

    ';
  9. echo $str;
  10. }
  11. }
  12. add_action('comment_form', 'olo_antispam', 11);
  13. function yanzhengma(){
  14. if ( !is_user_logged_in() ) {
  15. $pcodes = trim($_POST['pcodes']);
  16. $subpcodes = trim($_POST['subpcodes']);
  17. if((($pcodes)!=$subpcodes) || empty($subpcodes)){
  18. wp_die( __('错误!请输入正确的验证码') );
  19. }
  20. }
  21. }
  22. 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]