几个实用的 WordPress 代码片段

贴几个最近用到 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-itemmenu-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' );

沈唁志|一个PHPer的成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:几个实用的 WordPress 代码片段

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏较真的前端

使用神器eruda 进行移动端调试

3453
来自专栏小古哥的博客园

微信小程序-开发入门(一)

微信小程序已经火了一段时间了,之前一直也在关注,就这半年的发展来看,相对原生APP大部分公司还是不愿意将主营业务放到微信平台上,以免受制于腾讯,不过就小程序的应...

5945
来自专栏向治洪

Vue.js简介

Vue.js简介 Vue.js(读音 /vjuː/, 类似于view)是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设...

3027
来自专栏编程之路

羊皮书APP(Android版)开发系列(一)Icon图片生成神器

        工欲善其事,必先利其器,我们要开发一款app,首先我们肯定要知道app的名字,其次我们就要准备app的logo图片,而这个logo图片又有多种尺...

943
来自专栏守望轩

Visual Studio 2008 每日提示(七)

#061、增大编辑器工具提示的字体 原文地址:http://blogs.msdn.com/saraford/archive/2007/10/15/did-yo...

2704
来自专栏数据结构笔记

python爬虫系列之 xpath实战:批量下载壁纸

我们要爬取的目标网站是:http://www.netbian.com/,这个网站长这样:

3654
来自专栏向治洪

Vue.js快速入门

Vue.js简介 Vue.js(读音 /vjuː/, 类似于view)是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设...

2739
来自专栏mukekeheart的iOS之旅

iOS学习——iOS项目Project 和 Targets配置详解

  最近开始学习完整iOS项目的开发流程和思路,在实际的项目开发过程中,我们通常需要对项目代码和资料进行版本控制和管理,一般比较常用的SVN或者Github进行...

5217
来自专栏Youngxj

emlog新方法:导航栏加入Font Awesome图标,可自定义

2163
来自专栏漫漫前端路

vue-cli 3.0 下发布一个 TypeScript 组件

vue-cli 3.0 提供了一系列功能,包括对 Babel, TypeScript, ESlint, PWA 等开箱即用的支持,同时,它也提供了一个 CLI ...

1722

扫码关注云+社区

领取腾讯云代金券