对于 WordPress 开发者来说,熟知一些必要的代码是非常必要的。如果您也是一个开发者,那么下面的这十个必知的代码赶快收藏吧。对您以后的开发将是非常有用的。
一、让 JPG 图像质量更好
WordPress 会自动把 JPG 图像质量压缩到 90 。如果您的网站对图片质量要求高的话,那么可以通过下面的函数把 JPG 质量调到 100.
add_filter( 'jpg_quality', 'high_jpg_quality' ); function high_jpg_quality() { return 100; }
二、适当的 URLs
使用 esc_url() 函数您的 URLs 形成适当的形式和具有有效的字符。
$my_url = 'http://myawesomesite.com/?awesome=true'; $url = esc_url( $my_url );
三、让文本小工具支持简码
现在的主题很多提供了简码,为了让小工具支持简码,需要添加下面的代码:
add_filter( 'widget_text', 'do_shortcode' );
四、延迟 RSS 发布
在 WordPress 如何避免偶然性发布文章一文中介绍了如何在发布文章之前确认发布文章,以避免不成熟或错误的文章发布,下面的代码让你的 RSS 延迟发布,有异曲同工之妙。
function publish_later_on_feed($where) { global $wpdb; if ( is_feed() ) { $time_now = gmdate('Y-m-d H:i:s'); $time_delay = '15'; // integer $time_span = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR $where = " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$time_now') > $time_delay "; } return $where; } add_filter('posts_where', 'publish_later_on_feed');
五、在 RSS feed 中显示特色图像
图片胜过千言万语,在 RSS feed 中显示特色图像无疑会增加文章的可读性。
add_filter('the_content_feed', 'rss_post_thumbnail'); function rss_post_thumbnail($content) { global $post; if( has_post_thumbnail($post->ID) ) $content = '<p>' . get_the_post_thumbnail($post->ID, 'thumbnail') . '</p>' . $content; return $content; }
六、关闭评论中的 HTML 支持
您可以通过关闭评论中的 HTML 支持来过滤垃圾评论链接。
// This will occur when the comment is posted function plc_comment_post( $incoming_comment ) { // convert everything in a comment to display literally $incoming_comment['comment_content'] = htmlspecialchars($incoming_comment['comment_content']); // the one exception is single quotes, which cannot be #039; because WordPress marks it as spam $incoming_comment['comment_content'] = str_replace( "'", '&apos;', $incoming_comment['comment_content'] ); return( $incoming_comment ); } // This will occur before a comment is displayed function plc_comment_display( $comment_to_display ) { // Put the single quotes back in $comment_to_display = str_replace( '&apos;', "'", $comment_to_display ); return $comment_to_display; } add_filter( 'preprocess_comment', 'plc_comment_post', '', 1 ); add_filter( 'comment_text', 'plc_comment_display', '', 1 ); add_filter( 'comment_text_rss', 'plc_comment_display', '', 1 ); add_filter( 'comment_excerpt', 'plc_comment_display', '', 1 ); // This stops WordPress from trying to automatically make hyperlinks on text: remove_filter( 'comment_text', 'make_clickable', 9 );
七、自定义登录 logo
在 WordPress 登录界面里,会显示 WordPress 的图标,如果你需要修改,则使用下面的代码。
add_action('admin_head', 'custom_logo'); function custom_logo() { echo ' <style type="text/css"><!-- #header-logo { background-image: url('.get_bloginfo('template_directory').'/images/custom-logo.gif) !important; } --></style>';
八、移除 WordPress 版本说明
这个可以增加 WordPress 的安全性。
<?php // Remove the WP version for extra WordPress Security function remove_wp_version(){ return ''; } add_filter('the_generator', 'remove_wp_version'); ?>
九、自动版权日期
许多网站都具有过期的版权日期,这个我们往往容易忽略。现在我们使用一个函数,来自动更新。
function comicpress_copyright() { global $wpdb; $copyright_dates = $wpdb->get_results(" SELECT YEAR(min(post_date_gmt)) AS firstdate, YEAR(max(post_date_gmt)) AS lastdate FROM $wpdb->posts WHERE post_status = 'publish' "); $output = ''; if($copyright_dates) { $copyright = "© " . $copyright_dates[0]->firstdate; if($copyright_dates[0]->firstdate != $copyright_dates[0]->lastdate) { $copyright .= '-' . $copyright_dates[0]->lastdate; } $output = $copyright; } return $output; }
然后调用函数:
><?php echo comicpress_copyright(); ?>
十、登录重定向到指定的地址
使用下面的代码实现:
<?php function redirect_user_on_role() { //retrieve current user info global $current_user; get_currentuserinfo(); //If login user role is Subscriber if ($current_user->user_level == 0) { wp_redirect( home_url() ); exit; } //If login user role is Contributor else if ($current_user->user_level > 1) { wp_redirect( home_url() ); exit; } //If login user role is Editor else if ($current_user->user_level >8) { wp_redirect( home_url() ); exit; } // For other rolse else { $redirect_to = 'https://www.weixiaoduo.com/'; return $redirect_to; } } add_action('admin_init','redirect_user_on_role'); ?>