贴几个最近用到 WordPress 的代码片段,代码均搜集于网络,使用方式都是添加到主题的 functions.php
文件。
"Talk is cheap. Show me the code." —— Linus Torvalds
搜索结果页面关键字高亮
为搜索结果页中的标题和正文的关键字添加 highlight
类,然后你就可以通过 CSS 设定高亮样式了。
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' );
搜索关键字为空时自动跳转到首页
默认情况下,如果关键字为空,WordPress 会列出所有的文章。谁会这么无聊… 不如自动跳转到首页。
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' );
关闭文章的标签功能
用不到标签,留着碍眼?去掉吧,就这么简单粗暴。
function qq52o_unregister_post_tag() {
unregister_taxonomy_for_object_type('post_tag', 'post');
}
add_action( 'init', 'qq52o_unregister_post_tag' );
清理 WordPress 菜单中的 classes
WordPress 菜单默认会输出一堆然并卵的 classes
。如果你有洁癖,可以只保留你觉得有用的 classes
,比如我觉得 current-menu-item
和 menu-item-has-children
最有用了。
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' );
自动设置文章的第一张图为特色图像
懒得每次手动设置特色图像?这段代码可以自动把文章中上传的第一张图片设置为特色图像。(不支持外链图片)
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' );
添加短代码
这段代码是把 [attachment id="1,2,3"]
输出为一个附件列表。
function qq52o_attachment_shortcode( $atts ) {
$ids = explode(',', $atts['ids']);
$html = '';
foreach ($ids as $id) {
$url = wp_get_attachment_url( $id );
$name = basename($url);
$html .= '<li><a class="file" href="' . $url . '" target="_blank">' . basename($url) . '</a></li>';
}
return '<div class="attachment-box"><h5 class="title">附件:</h5><ul>' . $html . '</ul></div>';
}
add_shortcode( 'attachment', 'qq52o_attachment_shortcode' );
看见代码就想睡觉