当前位置:秋硕笔记 > 主机 > 正文

wordpress常用代码

1、在注册页面加入提示讯息:开放WordPress注册后,是否觉得注册框非常单调,现在你可以透过一串简单的语法,直接对在WordPres注册页面加入提示讯息,让访客可以更快了解到注册会员有什么好处。


add_action('register_form', 'register_message');
function register_message() {
$html = '

注册成会员,查看更多资讯.

';
echo $html;
}

2、wordpress远程图片文件自动本地化:

[cc]
add_filter(‘content_save_pre’, ‘auto_save_image’);
function auto_save_image($content) {
$upload_path = ”;
$upload_url_path = get_bloginfo(‘url’);
//上传目录
if (($var = get_option(‘upload_path’)) != ”) {
$upload_path = $var;
} else {
$upload_path = ‘wp-content/uploads’;
}
if (get_option(‘uploads_use_yearmonth_folders’)) {
$upload_path.= ‘/’ . date(“Y”, time()) . ‘/’ . date(“m”, time());
}
//文件地址
if (($var = get_option(‘upload_url_path’)) != ”) {
$upload_url_path = $var;
} else {
$upload_url_path = bloginfo(‘url’);
}
if (get_option(‘uploads_use_yearmonth_folders’)) {
$upload_url_path.= ‘/’ . date(“Y”, time()) . ‘/’ . date(“m”, time());
}
require_once (“../wp-includes/class-snoopy.php”);
$snoopy_Auto_Save_Image = new Snoopy;
$img = array();
//以文章的标题作为图片的标题
if (!empty($_REQUEST[‘post_title’])) $post_title = wp_specialchars(stripslashes($_REQUEST[‘post_title’]));
$text = stripslashes($content);
if (get_magic_quotes_gpc()) $text = stripslashes($text);
preg_match_all(“/ src=(\”|\’){0,}(http:\/\/(.+?))(\”|\’|\s)/is”, $text, $img);
$img = array_unique(dhtmlspecialchars($img[2]));
foreach ($img as $key => $value) {
set_time_limit(180); //每个图片最长允许下载时间,秒
if (str_replace(get_bloginfo(‘url’) , “”, $value) == $value && str_replace(get_bloginfo(‘home’) , “”, $value) == $value) {
//判断是否是本地图片,如果不是,则保存到服务器
$fileext = substr(strrchr($value, ‘.’) , 1);
$fileext = strtolower($fileext);
if ($fileext == “” || strlen($fileext) > 4) $fileext = “jpg”;
$savefiletype = array(
‘jpg’,
‘gif’,
‘png’,
‘bmp’
);
if (in_array($fileext, $savefiletype)) {
if ($snoopy_Auto_Save_Image->fetch($value)) {
$get_file = $snoopy_Auto_Save_Image->results;
} else {
echo “error fetching file: ” . $snoopy_Auto_Save_Image->error . ”
“;
echo “error url: ” . $value;
die();
}
$filetime = time();
$filepath = “/” . $upload_path; //图片保存的路径目录
!is_dir(“..” . $filepath) ? mkdirs(“..” . $filepath) : null;
//$filename = date(“His”,$filetime).random(3);
$filename = substr($value, strrpos($value, ‘/’) , strrpos($value, ‘.’) – strrpos($value, ‘/’));
//$e = ‘../’.$filepath.$filename.’.’.$fileext;
//if(!is_file($e)) {
// copy(htmlspecialchars_decode($value),$e);
//}
$fp = @fopen(“..” . $filepath . $filename . “.” . $fileext, “w”);
@fwrite($fp, $get_file);
fclose($fp);
$wp_filetype = wp_check_filetype($filename . “.” . $fileext, false);
$type = $wp_filetype[‘type’];
$post_id = (int)$_POST[‘temp_ID2’];
$title = $post_title;
$url = $upload_url_path . $filename . “.” . $fileext;
$file = $_SERVER[‘DOCUMENT_ROOT’] . $filepath . $filename . “.” . $fileext;
//添加数据库记录
$attachment = array(
‘post_type’ => ‘attachment’,
‘post_mime_type’ => $type,
‘guid’ => $url,
‘post_parent’ => $post_id,
‘post_title’ => $title,
‘post_content’ => ”,
);
$id = wp_insert_attachment($attachment, $file, $post_parent);
$text = str_replace($value, $url, $text); //替换文章里面的图片地址

}
}
}
$content = AddSlashes($text);
remove_filter(‘content_save_pre’, ‘auto_save_image’);
return $content;
}
function mkdirs($dir) {
if (!is_dir($dir)) {
mkdirs(dirname($dir));
mkdir($dir);
}
return;
}
function dhtmlspecialchars($string) {
if (is_array($string)) {
foreach ($string as $key => $val) {
$string[$key] = dhtmlspecialchars($val);
}
} else {
$string = str_replace(‘&’, ‘&’, $string);
$string = str_replace(‘”‘, ‘”‘, $string);
$string = str_replace(‘<‘, ‘<‘, $string); $string = str_replace(‘>’, ‘>’, $string);
$string = preg_replace(‘/&(#\d;)/’, ‘&\1’, $string);
}
return $string;
}
[/cc]

3、三行代码关闭WordPress注册/密码修改通知邮件

[cc]
add_filter( ‘password_change_email’, ‘__return_false’ );//关闭密码修改用户邮件
add_filter( ‘wp_new_user_notification_email_admin’, ‘__return_false’ );//关闭新用户注册站长邮件
add_filter( ‘wp_new_user_notification_email’, ‘__return_false’ );//关闭新用户注册用户邮件
[/cc]

4、自定义欢迎邮件

[cc]
function git_register_mail( $user_id ) {
$user = get_user_by( ‘id’, $user_id );
$user_pass = $_POST[‘password’];
$blogname = get_option(‘blogname’);
$message = ‘

注册成功通知

尊敬的’.$user->user_login.’,您好!

欢迎您注册[‘.$blogname.’],下面是您的账号信息,请妥善保管!

您的详细注册信息
登录邮箱‘.$user->user_email.’
登录密码‘.$user_pass.’

如果您的账号有异常,请您在第一时间和我们取得联系哦,联系邮箱:’.get_bloginfo(‘admin_email’).’

‘;
$headers = “Content-Type:text/html;charset=UTF-8\n”;
wp_mail($user->user_email, ‘[‘.$blogname.’]欢迎注册’.$blogname, $message , $headers);
}
add_action( ‘user_register’, ‘git_register_mail’);
[/cc]

效果图如下:

wordpress常用代码

5、搜索结果页面关键字高亮

为搜索结果页中的标题和正文的关键字添加 highlight 类,然后你就可以通过 CSS 设定高亮样式了。

[cc]
function qq52o_highlight_search_keywords($text){
if ( is_search() ) {
$s = get_search_query();
$keys = explode(‘ ‘, $s);
$text = preg_replace(‘/(‘ . implode(‘|’, $keys) . ‘)/iu’, ‘$1’, $text);
}
return $text;
}
add_filter( ‘the_title’, ‘qq52o_highlight_search_keywords’ );
add_filter( ‘the_excerpt’, ‘qq52o_highlight_search_keywords’ );
[/cc]

6、搜索关键字为空时自动跳转到首页

默认情况下,如果关键字为空,WordPress 会列出所有的文章。谁会这么无聊… 不如自动跳转到首页。

[cc]
function qq52o_redirect_blank_search( $query_variables ) {
if ( isset( $_GET[‘s’] ) && empty( $_GET[‘s’]) ) {
wp_redirect( home_url() );
exit;
}
return $query_variables;
}
add_filter( ‘request’, ‘qq52o_redirect_blank_search’ );
[/cc]

7、关闭文章的标签功能

用不到标签,留着碍眼?去掉吧,就这么简单粗暴。

[cc]
function qq52o_unregister_post_tag() {
unregister_taxonomy_for_object_type(‘post_tag’, ‘post’);
}
add_action( ‘init’, ‘qq52o_unregister_post_tag’ );
[/cc]

8、清理 WordPress 菜单中的 classes

WordPress 菜单默认会输出一堆然并卵的 classes。如果你有洁癖,可以只保留你觉得有用的 classes,比如我觉得 current-menu-item 和 menu-item-has-children 最有用了。

[cc]
function qq52o_cleanup_nav_menu_class( $classes ) {
return array_intersect($classes, array(
‘current-menu-item’,
‘menu-item-has-children’
));
}
add_filter( ‘nav_menu_css_class’, ‘qq52o_cleanup_nav_menu_class’ );
[/cc]

9、自动设置文章的第一张图为特色图像

懒得每次手动设置特色图像?这段代码可以自动把文章中上传的第一张图片设置为特色图像。(不支持外链图片)

[cc]
function qq52o_autoset_featured_image() {
global $post;
if (!is_object($post)) return;
$already_has_thumb = has_post_thumbnail($post->ID);
if (!$already_has_thumb) {
$attached_image = get_children( “post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1” );
if ($attached_image) {
foreach ($attached_image as $attachment_id => $attachment) {
set_post_thumbnail($post->ID, $attachment_id);
}
}
}
}
add_action( ‘the_post’, ‘qq52o_autoset_featured_image’ );
add_action( ‘save_post’, ‘qq52o_autoset_featured_image’ );
add_action( ‘draft_to_publish’, ‘qq52o_autoset_featured_image’ );
add_action( ‘new_to_publish’, ‘qq52o_autoset_featured_image’ );
add_action( ‘pending_to_publish’, ‘qq52o_autoset_featured_image’ );
add_action( ‘future_to_publish’, ‘qq52o_autoset_featured_image’ );
[/cc]

10、添加短代码

这段代码是把 [attachment id=”1,2,3″] 输出为一个附件列表。

[cc]
function qq52o_attachment_shortcode( $atts ) {
$ids = explode(‘,’, $atts[‘ids’]);
$html = ”;

foreach ($ids as $id) {
$url = wp_get_attachment_url( $id );
$name = basename($url);
$html .= ‘

‘;
}
return ‘

附件:
    ‘ . $html . ‘

‘;
}
add_shortcode( ‘attachment’, ‘qq52o_attachment_shortcode’ );
[/cc]

11、用户注册页面添加自定义密码功能

[cc]
/*———————————————————————————–*/
/* WordPress注册用户填写密码-https:/www.qinkei.com
/*———————————————————————————–*/
add_action( ‘register_form’, ‘loper_register_fields’ );
function loper_register_fields(){
?>

add( ‘passwords_not_matched’, “密码错误提示:两次输入的密码需要一样哦” ); }
if ( strlen( $_POST[‘password’] ) < 6 ) { //输入你的6就是6位数$errors->add( ‘password_too_short’, “密码错误提示:密码请填写六位” ); }
}
// 禁止输入空白密码!
add_action( ‘user_register’, ‘loper_extra_fields’, 100 );
function loper_extra_fields( $user_id ){
$userdata = array();
$userdata[‘ID’] = $user_id;
if ( $_POST[‘password’] !== ” ) {
$userdata[‘user_pass’] = $_POST[‘password’];}
$new_user_id = wp_update_user( $userdata );
}
[/cc]

11、Blockquote引用

[cc]

我个人更多的认为这是品牌的一点点成长,是非常非常有必要的,他就像人的发展一样,不断的探索、优化,越变越好。可口可乐在这个方面是做得很好的,他的品牌建设花费了一百多年,并且今天仍在不断的更新升级当中。

[/cc]

示例:

我个人更多的认为这是品牌的一点点成长,是非常非常有必要的,他就像人的发展一样,不断的探索、优化,越变越好。可口可乐在这个方面是做得很好的,他的品牌建设花费了一百多年,并且今天仍在不断的更新升级当中。

12、更新过WordPress文章后通知评论过的用户

[cc]
/**
* WordPress展示最近更新过的文章 并通知评论过的用户
*/
//修改更新文章时邮件通知评论用户
add_action( ‘submitpost_box’, ‘lxtx_fo_submit_box’);
function lxtx_fo_submit_box( ){
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

邮件通知

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
}
//开始
add_action( ‘publish_post’, ‘lxtx_fo_emaill_report_users’ );
function lxtx_fo_emaill_report_users($post_ID)
{
//如果未勾选保存,不进行任何操作
if($_POST[‘FO_emaill_report_user’] != ‘true’){
return;
}

//修订版本不通知,以免滥用
if( wp_is_post_revision($post_ID) ){
return;
}

//获取wp数据操作类
global $wpdb,$post;
// 读数据库,获取文章的所有用户的email并且不重复
$emailauthor != ‘你自己的邮箱’;
$wp_user_emails = $wpdb->get_results(“SELECT DISTINCT comment_author, comment_author_email FROM $wpdb->comments WHERE TRIM(comment_author_email) IS NOT NULL AND TRIM(comment_author_email) != ” AND TRIM(comment_author_email) != ‘$emailauthor’ AND comment_post_ID = $post->ID”);

// 获取博客名称
$blogname = wp_specialchars_decode(get_option(‘blogname’), ENT_QUOTES);
// 获取博客URL
$blogurl = get_bloginfo(“siteurl”);

//文章链接
$post_link = get_permalink($post_ID);
//文章标题$post -> post_title
$post_title = strip_tags($_POST[‘post_title’]);
//文章内容$post->post_content
$post_content = strip_tags($_POST[‘post_content’]);
//文章摘要
$output = preg_replace(‘/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,0}((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,200}).*/s’,’\1′,$post_content).’……’;

//邮件头,以免乱码
$message_headers = “Content-Type: text/html; charset=\”utf-8\”\n”;
// 邮件标题
$subject = ‘您曾经来访过的《’.$post_title.’》文章更新通知。’;

foreach ( $wp_user_emails as $wp_user_email )
{
// 邮件内容
$message = ‘


亲爱的’.$wp_user_email->comment_author.’:

您曾经来访过的《’.$post_title.’》有更新,博主觉得有必要通知您,希望不会骚扰到您。

文章标题:‘.$post_title.’


文章摘要:’.$output.’

您可以点击链接
‘.$blogname.’
>
‘.$post_title.’
详细查看


来自:

‘.$blogname.’

该邮件为系统发送邮件,请勿直接回复!如有打扰,请向博主留言反映。非常感谢您的阅读!

‘;
wp_mail($wp_user_email->comment_author_email, $subject, $message, $message_headers);
}
}
[/cc]

13、WordPress上传图片自动重命名

代码一:按时间重命名:上传文件时会以“年月日时分秒+千位毫秒整数”的格式重命名文件,如“20171023122221765.jpg”。

[cc]
//wordpress上传文件重命名
function git_upload_filter($file) {
$time = date(“YmdHis”);
$file[‘name’] = $time . “” . mt_rand(1, 100) . “.” . pathinfo($file[‘name’], PATHINFO_EXTENSION);
return $file;
}
add_filter(‘wp_handle_upload_prefilter’, ‘git_upload_filter’);
[/cc]

代码二:用MD5加密生成数字并重命名:名称规则是由系统自动生成的一个32位的MD5加密文件名,由于默认生成的32位文件名有点长,所以使用substr(md5($name),0,20)截断将其设置为20位。

[cc]
//wordpress上传文件重命名
function rename_filename($filename) {
$info = pathinfo($filename);
$ext = emptyempty($info[‘extension’]) ? ” : ‘.’ . $info[‘extension’];
$name = basename($filename, $ext);
return substr(md5($name), 0, 20) . $ext;
}
add_filter(‘sanitize_file_name’, ‘rename_filename’, 10);
[/cc]

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏

评论抢沙发