WP常用增强
后台显示id
// 文章
add_filter('manage_posts_columns', [$this, 'show_id_column']);
add_action('manage_posts_custom_column', [$this, 'show_id_value'], 10, 2);
// 页面
add_filter('manage_pages_columns', [$this, 'show_id_column']);
add_action('manage_pages_custom_column', [$this, 'show_id_value'], 10, 2);
// 媒体
add_filter('manage_media_columns', [$this, 'show_id_column']);
add_action('manage_media_custom_column', [$this, 'show_id_value'], 10, 2);
// 链接
add_filter('manage_link-manager_columns', [$this, 'show_id_column']);
add_action('manage_link_custom_column', [$this, 'show_id_value'], 10, 2);
// 分类
foreach (get_taxonomies() as $taxonomy) {
add_action("manage_edit-" . $taxonomy . "_columns", [$this, 'show_id_column']);
add_filter("manage_" . $taxonomy . "_custom_column", [$this, 'show_id_filter_id_value'], 10, 3);
}
// 用户
add_action('manage_users_columns', [$this, 'show_id_column']);
add_filter('manage_users_custom_column', [$this, 'show_id_filter_id_value'], 10, 3);
// 评论
add_action('manage_edit-comments_columns', [$this, 'show_id_column']);
add_action('manage_comments_custom_column', [$this, 'show_id_value'], 10, 2);
// 样式 ID列宽度
add_action('admin_head', function () {
echo '<style type="text/css">#krjojo_tool_id { width: 50px; }</style>';
});
public function show_id_column($columns)
{
if (count($columns) > 2) {
$columns = array_merge(array_slice($columns, 0, 1), ['krjojo_tool_id' => 'ID'], array_slice($columns, 1));
}
// $columns['id'] = 'ID';
return $columns;
}
public function show_id_value($column_name, $id)
{
if ($column_name == 'krjojo_tool_id') echo $id;
}
public function show_id_filter_id_value($value, $column_name, $id)
{
if ($column_name == 'krjojo_tool_id') $value = $id;
return $value;
}
自动添加图片灯箱
add_filter('render_block_data', function ($parsed_block) {
if (
is_single() &&
($parsed_block['blockName'] ?? false) === "core/image" && // 判断图片古腾堡块
($parsed_block['attrs']["linkDestination"] ?? false) === "none" && // 判断图片没有连接到外部
($parsed_block['attrs']["lightbox"]["enabled"] ?? false) !== true // 判断图片没有启用灯箱
) {
unset($parsed_block['attrs']['linkDestination']);
$parsed_block['attrs']["lightbox"] = ["enabled" => true];
}
return $parsed_block;
});
邮件SMTP
add_action('phpmailer_init', function ($phpmailer) {
$phpmailer->FromName = '手里有只毛毛虫'; //发件人名称
$phpmailer->Host = 'smtp.qq.com';
$phpmailer->Port = '465';
$phpmailer->Username = 'krjojo@qq.com'; //发件人邮箱
$phpmailer->Password = 'password'; //发件人邮箱密码
$phpmailer->From = 'krjojo@qq.com'; //发件人邮箱
$phpmailer->SMTPAuth = true;
$phpmailer->SMTPSecure = 'ssl';
$phpmailer->IsSMTP();
});
add_filter('wp_mail_from', function () {
return 'krjojo@qq.com'; //发件人邮箱
});
页头展示keywords
在文章的header头展示分类的keywords,现在搜索引擎基本不看
add_action('wp_head', function () {
if (is_single()) {
global $post;
$tags = get_the_tags($post->ID);
if ($tags) {
$keywords = [];
foreach ($tags as $tag) {
$keywords[] = $tag->name;
}
$keywords_string = implode(', ', $keywords);
echo '<meta name="keywords" content="' . esc_attr($keywords_string) . '">' . "\n";
}
}
});
开启Wordpress对上传svg图片的支持
可以举一反三,添加其他格式支持
add_filter('upload_mimes', function ($mimes) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
});
开启Wordpress自带链接功能
默认关闭,属于旧互联网友链范畴
add_filter('pre_option_link_manager_enabled', '__return_true');
登录推送
add_action('wp_login', function ($user_login) {
$message = '手里有只毛毛虫-服务器登陆提醒
登陆IP:' . $_SERVER['REMOTE_ADDR'] . '
登陆名:' . $user_login . '
完整信息登录:' . json_encode($_SERVER, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
wp_mail('krjojo@qq.com', '手里有只毛毛虫登录提醒', $message);
}, 10);
本地头像
add_filter('pre_get_avatar_data', function ($args, $id_or_email) {
if ($id_or_email == "1" || $id_or_email === "1456441157@qq.com" || ($id_or_email->user_id ?? "0") == "1") {
$args['url'] = '/wp-content/uploads/2024/05/站长头像.avif';
} else {
$args['url'] = '/wp-content/uploads/2024/03/游客头像.webp';
}
return $args;
}, 10, 2);
登录页 一为主题样式
作者:一为
<?php
add_action('login_header', function () {
echo '<div class="login-container">
<div class="login-body">
<div class="login-img shadow-lg position-relative flex-fill">
<div class="img-bg position-absolute">
<div class="login-info">
<h2>' . get_bloginfo('name') . '</h2>
<p>' . get_bloginfo('description') . '</p>
</div>
</div>
</div>';
});
add_action('login_footer', function () {
echo '</div><!--login-body END-->
</div><!--login-container END-->
<div class="footer-copyright position-absolute">
<span>Copyright © <a href="' . esc_url(home_url()) . '" class="text-white-50" title="' . get_bloginfo('name') . '" rel="home">' . get_bloginfo('name') . '</a></span>
</div>';
});
//登录页面的LOGO链接为首页链接
add_filter('login_headerurl', function () {
return esc_url(home_url());
});
add_action('login_head', function () {
function getRandomColorRGB()
{
$r = mt_rand(0, 255);
$g = mt_rand(0, 255);
$b = mt_rand(0, 255);
return "rgb($r, $g, $b)";
}
$login_color = ['color-l' => getRandomColorRGB(), 'color-r' => getRandomColorRGB()];
$ico = '/favicon.ico';
$img = '/wp-content/uploads/2024/01/课室低码率.jpg';
echo '<style type="text/css">
body{background:' . $login_color['color-l'] . ';background:-o-linear-gradient(45deg,' . $login_color['color-l'] . ',' . $login_color['color-r'] . ');background:linear-gradient(45deg,' . $login_color['color-l'] . ',' . $login_color['color-r'] . ');height:100vh}
.login h1 a{background-image:url(' . $ico . ');width:180px;background-position:center center;}
.login-container{position:relative;display:flex;align-items:center;justify-content:center;height:100vh}
.login-body{position:relative;display:flex;margin:0 1.5rem}
.login-img{display:none}
.img-bg{color:#fff;padding:2rem;bottom:-2rem;left:0;top:-2rem;right:0;border-radius:10px;background-image:url(' . $img . ');background-repeat:no-repeat;background-position:center center;background-size:cover}
.img-bg h2{font-size:2rem;margin-bottom:1.25rem}
#login{position:relative;background:#fff;border-radius:10px;padding:28px;width:280px;box-shadow:0 1rem 3rem rgba(0,0,0,.175)}
.flex-fill{flex:1 1 auto}
.position-relative{position:relative}
.position-absolute{position:absolute}
.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}
.footer-copyright{bottom:0;color:rgba(255,255,255,.6);text-align:center;margin:20px;left:0;right:0}
.footer-copyright a{color:rgba(255,255,255,.6);text-decoration:none}
#login form{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-width:0;padding:0}
#login form .forgetmenot{float:none}
.login #login_error,.login .message,.login .success{border-left-color:#40b9f1;box-shadow:none;background:#d4eeff;border-radius:6px;color:#2e73b7}
.login #login_error{border-left-color:#f1404b;background:#ffd4d6;color:#b72e37}
#login form p.submit{padding:20px 0 0}
#login form p.submit .button-primary{float:none;background-color:#f1404b;font-weight:bold;color:#fff;width:100%;height:40px;border-width:0;text-shadow:none!important;border-color:none;transition:.5s}
#login form input{box-shadow:none!important;outline:none!important}
#login form p.submit .button-primary:hover{background-color:#444}
.login #backtoblog,.login #nav{padding:0}
@media screen and (min-width:768px){.login-body{width:1200px}
.login-img{display:block}
#login{margin-left:-60px;padding:40px}
}
</style>';
});
// 关闭多语言切换
add_filter('login_display_language_dropdown', '__return_false');
评论过滤
符合关键词和非中文评论,自动移至垃圾评论,不会再收到邮件打扰了。
add_filter('pre_comment_approved', 'pre_comment_approved', 99, 2);
public function pre_comment_approved($approved, $commentdata)
{
$comment = $commentdata['comment_content'];
$keyword = [
'这里填',
'敏感词',
'广告网址',
];
foreach ($keyword as $value) {
if (strpos($comment, $value) !== false) {
return 'spam';
}
}
// 非中文
if (!preg_match('/[一-龥]/u', $comment)) {
return 'spam';
}
return $approved;
}