WordPress 系统本身有用一套非常不错的开发接口,几乎你能想到的功能,基本都可以动动手做出来。事实上,Wordpress 官方已经提供了超过 2 万的插件,帮你完成各式各样的工作。
这里就贴几个常用到 WordPress 的功能代码片段,代码搜集于网络,使用方式都是添加到主题的 functions.php 文件。
搜索结果页面关键字高亮
为搜索结果页中的标题和正文的关键字添加 highlight 类,然后你就可以通过 CSS 设定高亮样式了。
1 2 3 4 5 6 7 8 9 10 11 | //搜索结果页面关键字高亮 function fanly_highlight_search_keywords($text){ if ( is_search() ) { $s = get_search_query(); $keys = explode(' ', $s); $text = preg_replace('/(' . implode('|', $keys) . ')/iu', '<strong class="highlight">$1</strong>', $text); } return $text; } add_filter( 'the_title', 'fanly_highlight_search_keywords' ); add_filter( 'the_excerpt', 'fanly_highlight_search_keywords' ); |
搜索关键字为空时自动跳转到首页
默认情况下,如果关键字为空,WordPress 会列出所有的文章。谁会这么无聊… 不如自动跳转到首页。
1 2 3 4 5 6 7 8 9 | //搜索关键字为空时自动跳转到首页 function fanly_redirect_blank_search( $query_variables ) { if ( isset( $_GET['s'] ) && empty( $_GET['s']) ) { wp_redirect( home_url() ); exit; } return $query_variables; } add_filter( 'request', 'fanly_redirect_blank_search' ); |
关闭文章的标签功能
用不到标签,留着碍眼?去掉吧,就这么简单粗暴。
1 2 3 4 5 | //关闭文章的标签功能 function fanly_unregister_post_tag() { unregister_taxonomy_for_object_type('post_tag', 'post'); } add_action( 'init', 'fanly_unregister_post_tag' ); |
清理 WordPress 菜单中的 classes
WordPress 菜单默认会输出一堆然并卵的 classes。如果你有洁癖,可以只保留你觉得有用的 classes,比如我觉得 current-menu-item 和 menu-item-has-children 最有用了。
1 2 3 4 5 6 7 8 | //清理 WordPress 菜单中的 classes function fanly_cleanup_nav_menu_class( $classes ) { return array_intersect($classes, array( 'current-menu-item', 'menu-item-has-children' )); } add_filter( 'nav_menu_css_class', 'fanly_cleanup_nav_menu_class' ); |
自动设置文章的第一张图为特色图像
懒得每次手动设置特色图像?这段代码可以自动把文章中上传的第一张图片设置为特色图像。(不支持外链图片)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | //自动设置文章的第一张图为特色图像 function fanly_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', 'fanly_autoset_featured_image' ); add_action( 'save_post', 'fanly_autoset_featured_image' ); add_action( 'draft_to_publish', 'fanly_autoset_featured_image' ); add_action( 'new_to_publish', 'fanly_autoset_featured_image' ); add_action( 'pending_to_publish', 'fanly_autoset_featured_image' ); add_action( 'future_to_publish', 'fanly_autoset_featured_image' ); |