所有文章
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 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压缩
- //开启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 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预设外观的小工具
- // 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"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" />';
- $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');