init blog
This commit is contained in:
1 parent
5acc46db8e
commit
843783ce9a
1820 files changed
+539344
No files matched your search
@@ -0,0 +1,708 @@
|
||||
<?php
|
||||
/**
|
||||
* 选项初始化和调用
|
||||
*
|
||||
* @since Unknown
|
||||
* @since Beginning 4.0.4 对过早的调用抛出警告信息。
|
||||
* @since Beginning 4.0.5 不再按需自动引入 `Bing_Mpanel` 类;过早调用时直接退出函数。
|
||||
*
|
||||
* `add_action( 'after_setup_theme', 'Bing_mpanel', 2, 0 );`
|
||||
*/
|
||||
function Bing_mpanel( $option = false ) {
|
||||
static $mpanel;
|
||||
|
||||
if ( !did_action( 'after_setup_theme' ) ) {
|
||||
_doing_it_wrong(
|
||||
__FUNCTION__,
|
||||
__( '请务必在 `after_setup_theme` 动作钩子运行之后再调用此函数。', 'Bing' ),
|
||||
'4.0.4'
|
||||
);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( !isset( $mpanel ) )
|
||||
$mpanel = new Bing_Mpanel();
|
||||
|
||||
if ( $option === false )
|
||||
return $mpanel;
|
||||
|
||||
$value = $mpanel->get( $option );
|
||||
$value = apply_filters( 'Bing_mpanel_' . $option, $value, $option, $mpanel );
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动加载
|
||||
*
|
||||
* @since Beginning 4.0.5
|
||||
* @see Bing_theme_objects_init()
|
||||
*/
|
||||
function Bing_theme_auto_loader( $name ) {
|
||||
if ( strpos( $name, 'Bing_' ) !== 0 )
|
||||
return;
|
||||
|
||||
$name = strtolower( substr( $name, 5 ) );
|
||||
$name = str_replace( '_', '-', $name );
|
||||
|
||||
if ( validate_file( $name ) !== 0 )
|
||||
return;
|
||||
|
||||
$directory = get_template_directory();
|
||||
$filename = "{$directory}/functions/class-{$name}.php";
|
||||
|
||||
if ( file_exists( $filename ) )
|
||||
require( $filename );
|
||||
}
|
||||
|
||||
/**
|
||||
* 主题对象初始化
|
||||
*
|
||||
* @since Beginning 4.0.5
|
||||
*/
|
||||
function Bing_theme_objects_init() {
|
||||
// 注册自动加载
|
||||
spl_autoload_register( 'Bing_theme_auto_loader' );
|
||||
|
||||
// 初始化设置选项
|
||||
Bing_mpanel();
|
||||
|
||||
// 初始化主题更新
|
||||
Bing_Theme_Update::init();
|
||||
|
||||
// 初始化垃圾评论防御
|
||||
add_action( 'init', array( 'Bing_Anti_Spam', 'init' ) );
|
||||
|
||||
// 初始化浏览统计
|
||||
Bing_Views_Stats::init();
|
||||
}
|
||||
add_action( 'after_setup_theme', 'Bing_theme_objects_init', 2 );
|
||||
|
||||
/**
|
||||
* 语言本地化
|
||||
*/
|
||||
function Bing_theme_localize(){
|
||||
load_theme_textdomain( 'Bing', get_template_directory() . '/languages' );
|
||||
}
|
||||
add_action( 'after_setup_theme', 'Bing_theme_localize' );
|
||||
|
||||
/**
|
||||
* 显示不兼容提示信息
|
||||
*/
|
||||
function Bing_theme_wp_version_compatible(){
|
||||
global $wp_version;
|
||||
|
||||
if (
|
||||
version_compare( THEME_REQUIRED_WP, $wp_version, '>' ) &&
|
||||
current_user_can( 'update_core' )
|
||||
)
|
||||
echo '
|
||||
<div class="error" id="theme-wp-version-compatible">
|
||||
<p>
|
||||
<strong>' . __( '警告:', 'Bing' ) . '</strong>'
|
||||
. sprintf(
|
||||
__(
|
||||
'%s 主题能完美运行至少需要 WordPress %s 版本,您当前的 WordPress 版本(%s)可能会使主题部分功能出现问题;为了安全性和兼容性考虑,请尽快升级 WordPress 到最新版本,或者至少升级到能使主题完美运行的最低版本。',
|
||||
'Bing'
|
||||
),
|
||||
THEME_NAME,
|
||||
THEME_REQUIRED_WP,
|
||||
$wp_version
|
||||
) .
|
||||
'</p>
|
||||
</div>';
|
||||
}
|
||||
add_action( 'admin_notices', 'Bing_theme_wp_version_compatible', 8 );
|
||||
|
||||
/**
|
||||
* 关闭 Admin Bar
|
||||
*
|
||||
* @see is_admin_bar_showing()
|
||||
*/
|
||||
add_filter( 'show_admin_bar', '__return_false', 8 );
|
||||
|
||||
/**
|
||||
* 添加文章编辑器样式表
|
||||
*/
|
||||
function Bing_add_editor_style(){
|
||||
if( !Bing_mpanel( 'editor_preview' ) )
|
||||
return;
|
||||
|
||||
$args = array(
|
||||
'action' => 'theme_editor_style',
|
||||
'ver' => THEME_DB_VERSION
|
||||
);
|
||||
$url = add_query_arg( $args, admin_url( 'admin-ajax.php' ) );
|
||||
|
||||
add_editor_style( $url );
|
||||
}
|
||||
add_action( 'after_setup_theme', 'Bing_add_editor_style' );
|
||||
|
||||
/**
|
||||
* 添加主题功能支持
|
||||
*/
|
||||
function Bing_add_theme_support() {
|
||||
// HTML5
|
||||
add_theme_support( 'html5' );
|
||||
|
||||
// 网页标题
|
||||
add_theme_support( 'title-tag' );
|
||||
|
||||
// 特色图片
|
||||
add_theme_support( 'post-thumbnails' );
|
||||
|
||||
// 自定义背景
|
||||
add_theme_support( 'custom-background', array( 'default-color' => 'F0F0F5' ) );
|
||||
}
|
||||
add_action( 'after_setup_theme', 'Bing_add_theme_support' );
|
||||
|
||||
/**
|
||||
* 优化搜索页标题
|
||||
*/
|
||||
function Bing_optimize_search_title( $title ) {
|
||||
if( is_search() && !get_search_query() )
|
||||
$title['title'] = __( '搜索', 'Bing' );
|
||||
|
||||
return $title;
|
||||
}
|
||||
add_filter( 'document_title_parts', 'Bing_optimize_search_title', 12 );
|
||||
|
||||
/**
|
||||
* 挂载脚本
|
||||
*
|
||||
* @uses wp_register_style() 注册 CSS 样式表
|
||||
* @uses wp_enqueue_style() 挂载 CSS 样式表
|
||||
*
|
||||
* @uses wp_register_script() 注册 JavaScript 脚本
|
||||
* @uses wp_enqueue_script() 挂载 JavaScript 脚本
|
||||
*/
|
||||
function Bing_enqueue_scripts() {
|
||||
// IE8
|
||||
wp_enqueue_style( 'theme-ie8', get_template_directory_uri() . '/css/ie8.css', array( 'theme-style' ), THEME_DB_VERSION );
|
||||
wp_style_add_data( 'theme-ie8', 'conditional', 'lt IE 9' );
|
||||
|
||||
// NProgress
|
||||
wp_register_style( 'theme-nprogress', get_template_directory_uri() . '/css/nprogress.css', array( 'theme-style' ), THEME_DB_VERSION );
|
||||
wp_register_script( 'theme-nprogress', get_template_directory_uri() . '/js/nprogress.js', array( 'theme-base' ), THEME_DB_VERSION );
|
||||
if ( Bing_mpanel( 'progress' ) && Bing_mpanel( 'ajax_load_page' ) ){
|
||||
wp_enqueue_style( 'theme-nprogress' );
|
||||
wp_enqueue_script( 'theme-nprogress' );
|
||||
}
|
||||
|
||||
// Owl carousel
|
||||
wp_register_style( 'theme-owl-carousel', get_template_directory_uri() . '/css/owl.carousel.css', array( 'theme-style' ), THEME_DB_VERSION );
|
||||
wp_register_script( 'theme-owl-carousel', get_template_directory_uri() . '/js/owl.carousel.min.js', array( 'jquery', 'theme-base' ), THEME_DB_VERSION );
|
||||
if ( Bing_mpanel( 'slider_home' ) ){
|
||||
wp_enqueue_style( 'theme-owl-carousel' );
|
||||
wp_enqueue_script( 'theme-owl-carousel' );
|
||||
}
|
||||
|
||||
// Responsive
|
||||
wp_register_style( 'theme-responsive', get_template_directory_uri() . '/css/responsive.css', array( 'theme-style' ), THEME_DB_VERSION );
|
||||
|
||||
if ( Bing_mpanel( 'responsive' ) )
|
||||
wp_enqueue_style( 'theme-responsive' );
|
||||
|
||||
// Comment reply
|
||||
if ( get_option( 'thread_comments' ) )
|
||||
wp_enqueue_script( 'comment-reply' );
|
||||
|
||||
// Style
|
||||
wp_enqueue_style( 'theme-style', get_stylesheet_uri(), array( 'dashicons' ), THEME_DB_VERSION );
|
||||
|
||||
// Base
|
||||
wp_enqueue_script( 'theme-base', get_template_directory_uri() . '/js/base.js', array( 'jquery' ), THEME_DB_VERSION );
|
||||
wp_localize_script( 'theme-base', 'theme_base_args', array(
|
||||
'admin_ajax' => admin_url( 'admin-ajax.php' ),
|
||||
'ajax_comment' => Bing_mpanel( 'ajax_comment' ),
|
||||
'comment_loading' => __( '正在提交...', 'Bing' ),
|
||||
'ajax_load_page' => Bing_mpanel( 'ajax_load_page' ),
|
||||
'insert_smiley' => Bing_insert_smiley(),
|
||||
'progress' => Bing_mpanel( 'progress' ) && Bing_mpanel( 'ajax_load_page' ),
|
||||
'imageFirewall' => Bing_mpanel( 'image_firewall' ) ? parse_url( home_url(), PHP_URL_HOST ) : false
|
||||
) );
|
||||
|
||||
// HTML 5
|
||||
wp_enqueue_script( 'theme-html5', get_template_directory_uri() . '/js/html5.js', array(), '3.7.0' );
|
||||
wp_script_add_data( 'theme-html5', 'conditional', 'lt IE 9' );
|
||||
}
|
||||
add_action( 'wp_enqueue_scripts', 'Bing_enqueue_scripts' );
|
||||
|
||||
/**
|
||||
* 获取文章摘要
|
||||
*
|
||||
* 可以自定义摘要的字数(长度)和省略号样式;
|
||||
* 同时,作为 excerpt_length 和 excerpt_more 钩子的回调函数,根据条件返回摘要的字数和省略号样式。
|
||||
*
|
||||
* @see the_excerpt()
|
||||
* @see get_the_excerpt()
|
||||
* @see wp_trim_excerpt()
|
||||
*
|
||||
* @link http://www.endskin.com/excerpt-length-more/
|
||||
*
|
||||
* @param int $length 摘要字数;默认值为 100 个字。
|
||||
* @param string $more 省略号样式;默认值为西文省略号的 HTML 转义字符(…)。
|
||||
* @param bool $echo 是否直接输出摘要,分别对应 the_excerpt() 和 get_the_excerpt() 函数;默认值为 False。
|
||||
*
|
||||
* @return string|int
|
||||
*/
|
||||
function Bing_excerpt( $length = 100, $more = '…', $echo = false ){
|
||||
static $excerpt_length, $excerpt_more;
|
||||
|
||||
$current_filter = current_filter();
|
||||
|
||||
if ( $current_filter == 'excerpt_length' ) return $excerpt_length;
|
||||
if ( $current_filter == 'excerpt_more' ) return $excerpt_more;
|
||||
|
||||
$excerpt_length = $length;
|
||||
$excerpt_more = $more;
|
||||
|
||||
$callable = __FUNCTION__;
|
||||
add_filter( 'excerpt_length', $callable, 18 );
|
||||
add_filter( 'excerpt_more', $callable, 18 );
|
||||
|
||||
$excerpt = $echo ? the_excerpt() : get_the_excerpt();
|
||||
|
||||
remove_filter( 'excerpt_length', $callable, 18 );
|
||||
remove_filter( 'excerpt_more', $callable, 18 );
|
||||
|
||||
unset( $excerpt_length, $excerpt_more );
|
||||
return $excerpt;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取网页描述
|
||||
*/
|
||||
function Bing_site_description( $home ){
|
||||
if( is_home() || is_front_page() ) {
|
||||
$description = $home;
|
||||
} elseif( is_category() || is_tag() || is_tax() ) {
|
||||
$description = term_description();
|
||||
} elseif( is_singular() ) {
|
||||
$description = wp_trim_words( get_post()->post_content, 120, '' );
|
||||
} elseif( is_author() ) {
|
||||
$description = get_the_author_meta( 'description' );
|
||||
} elseif( is_date() ) {
|
||||
if ( is_day() )
|
||||
$d = __( 'Y年m月d日', 'Bing' );
|
||||
elseif ( is_month() )
|
||||
$d = __( 'Y年m月', 'Bing' );
|
||||
else
|
||||
$d = __( 'Y年', 'Bing' );
|
||||
|
||||
$date = get_the_date( $d );
|
||||
$description = sprintf( __( '%s发布的文章', 'Bing' ), $date );
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
|
||||
return strip_tags( trim( $description ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* 打印网页描述元标记
|
||||
*/
|
||||
function Bing_add_site_description_meta(){
|
||||
if( $description = Bing_site_description( Bing_mpanel( 'site_description' ) ) )
|
||||
echo '<meta name="description" content="' . esc_attr( $description ) . '" />';
|
||||
}
|
||||
add_action( 'wp_head', 'Bing_add_site_description_meta' );
|
||||
|
||||
/**
|
||||
* 调用侧边栏
|
||||
*/
|
||||
function Bing_sidebar(){
|
||||
if( Bing_mpanel( 'sidebar' ) )
|
||||
add_action( 'get_footer', 'get_sidebar', 1, 0 );
|
||||
}
|
||||
add_action( 'init', 'Bing_sidebar' );
|
||||
|
||||
/**
|
||||
* 移除侧边栏
|
||||
*/
|
||||
function Bing_remove_sidebar(){
|
||||
remove_action( 'get_footer', 'get_sidebar', 1 );
|
||||
}
|
||||
|
||||
/**
|
||||
* 告知 pingback 网址
|
||||
* 通过添加 `<link>` 标签,告知访问者文章的 pingback 网址。
|
||||
*/
|
||||
function Bing_pingback_link() {
|
||||
if ( !is_singular() || !pings_open() )
|
||||
return;
|
||||
|
||||
$url = get_bloginfo( 'pingback_url', 'display' );
|
||||
echo '<link rel="pingback" href="' . esc_url( $url ) . '" />';
|
||||
}
|
||||
add_action( 'wp_head', 'Bing_pingback_link', 2 );
|
||||
|
||||
/**
|
||||
* IE 浏览器使用最新模式渲染
|
||||
*/
|
||||
function Bing_ie_edge(){
|
||||
echo '<meta http-equiv="X-UA-Compatible" content="IE=edge">';
|
||||
}
|
||||
add_action( 'wp_head', 'Bing_ie_edge', 4 );
|
||||
|
||||
/**
|
||||
* 响应式布局
|
||||
*/
|
||||
function Bing_responsive(){
|
||||
if( !Bing_mpanel( 'responsive' ) )
|
||||
return;
|
||||
|
||||
$content = array(
|
||||
'width' => 'device-width',
|
||||
'initial-scale' => 1,
|
||||
'maximum-scale' => 1,
|
||||
'user-scalable' => 'no'
|
||||
);
|
||||
$content = apply_filters( 'responsive_viewport', $content );
|
||||
|
||||
$content_value = urldecode( http_build_query( $content, '', ',' ) );
|
||||
echo '<meta name="viewport" content="' . esc_attr( $content_value ) . '">';
|
||||
}
|
||||
add_action( 'wp_head', 'Bing_responsive', 6 );
|
||||
|
||||
/**
|
||||
* 生成空白首页文件
|
||||
*/
|
||||
function Bing_build_empty_index( $path ){
|
||||
$index = $path . '/index.php';
|
||||
|
||||
if( is_file( $index ) )
|
||||
return;
|
||||
|
||||
wp_mkdir_p( $path );
|
||||
file_put_contents( $index, "<?php\n// Silence is golden.\n" );
|
||||
}
|
||||
|
||||
/**
|
||||
* 头像缓存
|
||||
*/
|
||||
function Bing_avatar_cache( $url, $id_or_email, $args ){
|
||||
if( !Bing_mpanel( 'avatar_cache' ) || apply_filters( 'pre_option_show_avatars', false ) )
|
||||
return $url;
|
||||
|
||||
if( is_numeric( $id_or_email ) )
|
||||
$user = get_user_by( 'id', absint( $id_or_email ) );
|
||||
elseif( is_string( $id_or_email ) )
|
||||
strpos( $id_or_email, '@md5.gravatar.com' ) ? list( $email_hash ) = explode( '@', $id_or_email ) : $email = $id_or_email;
|
||||
elseif( $id_or_email instanceof WP_User )
|
||||
$user = $id_or_email;
|
||||
elseif( $id_or_email instanceof WP_Post )
|
||||
$user = get_user_by( 'id', (int) $id_or_email->post_author );
|
||||
elseif( is_object( $id_or_email ) && isset( $id_or_email->comment_ID ) ){
|
||||
if( !empty( $id_or_email->user_id ) )
|
||||
$user = get_user_by( 'id', (int) $id_or_email->user_id );
|
||||
|
||||
if( ( empty( $user ) || is_wp_error( $user ) ) && !empty( $id_or_email->comment_author_email ) )
|
||||
$email = $id_or_email->comment_author_email;
|
||||
}
|
||||
|
||||
if( empty( $email_hash ) ){
|
||||
if( !empty( $user ) )
|
||||
$email = $user->user_email;
|
||||
|
||||
$email_hash = md5( strtolower( trim( $email ) ) );
|
||||
}
|
||||
|
||||
$file_path = WP_CONTENT_DIR . THEME_AVATAR_PATH . "/$email_hash.png";
|
||||
$cache_time = Bing_mpanel( 'avatar_cache_day' ) * DAY_IN_SECONDS;
|
||||
|
||||
if( !is_file( $file_path ) || ( $cache_time > 0 && ( time() - filemtime( $file_path ) ) >= $cache_time ) ){
|
||||
remove_filter( 'get_avatar_url', 'Bing_avatar_cache', 16 );
|
||||
|
||||
$args['size'] = 150;
|
||||
$avatar_cache_size = get_avatar_url( $id_or_email, $args );
|
||||
|
||||
add_filter( 'get_avatar_url', 'Bing_avatar_cache', 16, 3 );
|
||||
|
||||
$editor = wp_get_image_editor( $avatar_cache_size );
|
||||
|
||||
if( is_wp_error( $editor ) )
|
||||
return $url;
|
||||
|
||||
Bing_build_empty_index( WP_CONTENT_DIR . THEME_AVATAR_PATH );
|
||||
|
||||
if( is_wp_error( $editor->save( $file_path, 'image/png' ) ) )
|
||||
return $url;
|
||||
}
|
||||
|
||||
return content_url( THEME_AVATAR_PATH . "/$email_hash.png" );
|
||||
}
|
||||
add_filter( 'get_avatar_url', 'Bing_avatar_cache', 16, 3 );
|
||||
|
||||
/**
|
||||
* 统一头像 Alt 标签
|
||||
*/
|
||||
function Bing_avatar_alt( $args ){
|
||||
if( empty( $args['alt'] ) )
|
||||
$args['alt'] = __( 'Gravatar 头像', 'Bing' );
|
||||
|
||||
return $args;
|
||||
}
|
||||
add_filter( 'get_avatar_data', 'Bing_avatar_alt', 16 );
|
||||
|
||||
/**
|
||||
* 搜索结果只限文章
|
||||
*/
|
||||
function Bing_search_filter_post( $query ){
|
||||
if( Bing_mpanel( 'search_filter_post' ) && !is_admin() && $query->is_main_query() && $query->is_search() )
|
||||
$query->set( 'post_type', 'post' );
|
||||
|
||||
return $query;
|
||||
}
|
||||
add_filter( 'pre_get_posts', 'Bing_search_filter_post' );
|
||||
|
||||
/**
|
||||
* 搜索结果只有一篇文章时自动跳转到该文章
|
||||
*/
|
||||
function Bing_search_one_redirect(){
|
||||
if( !Bing_mpanel( 'search_one_redirect' ) || Bing_mpanel( 'ajax_load_page' ) )
|
||||
return;
|
||||
|
||||
global $wp_query;
|
||||
|
||||
if( $wp_query->is_search() && $wp_query->found_posts == 1 ){
|
||||
wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
|
||||
die;
|
||||
}
|
||||
}
|
||||
add_action( 'template_redirect', 'Bing_search_one_redirect' );
|
||||
|
||||
/**
|
||||
* 移除头部无用信息
|
||||
*/
|
||||
function Bing_remove_head_refuse(){
|
||||
if( !Bing_mpanel( 'remove_head_refuse' ) )
|
||||
return;
|
||||
|
||||
remove_action( 'wp_head', 'wp_generator' );
|
||||
remove_action( 'wp_head', 'index_rel_link' );
|
||||
remove_action( 'wp_head', 'parent_post_rel_link', 10 );
|
||||
remove_action( 'wp_head', 'start_post_rel_link', 10 );
|
||||
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10 );
|
||||
remove_action( 'wp_head', 'feed_links', 2 );
|
||||
remove_action( 'wp_head', 'feed_links_extra', 3 );
|
||||
}
|
||||
add_action( 'init', 'Bing_remove_head_refuse' );
|
||||
|
||||
/**
|
||||
* 关闭离线编辑器接口
|
||||
*/
|
||||
function Bing_remove_xmlrpc(){
|
||||
if( !Bing_mpanel( 'remove_xmlrpc' ) )
|
||||
return;
|
||||
|
||||
remove_action( 'wp_head', 'rsd_link' );
|
||||
remove_action( 'wp_head', 'wlwmanifest_link' );
|
||||
|
||||
add_filter( 'xmlrpc_enabled', '__return_false' );
|
||||
}
|
||||
add_action( 'init', 'Bing_remove_xmlrpc', 5 );
|
||||
|
||||
/**
|
||||
* 阻止站内文章互相 Pingback
|
||||
*
|
||||
* @link http://www.endskin.com/noself-pingback
|
||||
*/
|
||||
function Bing_no_self_pingback( &$links ){
|
||||
if( !Bing_mpanel( 'no_self_pingback' ) )
|
||||
return;
|
||||
|
||||
$home_url = home_url();
|
||||
foreach( $links as $key => $value )
|
||||
if( strpos( $value, $home_url ) !== false )
|
||||
unset( $links[$key] );
|
||||
}
|
||||
add_action( 'pre_ping', 'Bing_no_self_pingback' );
|
||||
|
||||
/**
|
||||
* 文章内容链接全部在新窗口打开
|
||||
*/
|
||||
function Bing_post_auto_blank( $content ){
|
||||
if( Bing_mpanel( 'post_auto_blank' ) && is_single() )
|
||||
$content = str_replace( '<a', '<a target="_blank"', $content );
|
||||
|
||||
return $content;
|
||||
}
|
||||
add_filter( 'the_content', 'Bing_post_auto_blank', 13 );
|
||||
|
||||
/**
|
||||
* 文章内容外链全部添加 nofollow 并在新窗口打开
|
||||
*
|
||||
* PS:待调整
|
||||
*/
|
||||
function Bing_post_auto_nofollow_blank( $content ){
|
||||
if( !Bing_mpanel( 'post_auto_nofollow_blank' ) || !is_single() )
|
||||
return $content;
|
||||
|
||||
$regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>";
|
||||
|
||||
if( preg_match_all( "/$regexp/siU", $content, $matches, PREG_SET_ORDER ) ){
|
||||
if( !empty( $matches ) ){
|
||||
$site_url = site_url();
|
||||
for( $i = 0; $i < count( $matches ); ++$i ){
|
||||
$tag = $matches[$i][0];
|
||||
$tag2 = $matches[$i][0];
|
||||
$url = $matches[$i][0];
|
||||
$noFollow = '';
|
||||
$pattern = '/target\s*=\s*"\s*_blank\s*"/';
|
||||
preg_match( $pattern, $tag2, $match, PREG_OFFSET_CAPTURE );
|
||||
if( count( $match ) < 1 ) $noFollow .= ' target="_blank" ';
|
||||
$pattern = '/rel\s*=\s*"\s*[n|d]ofollow\s*"/';
|
||||
preg_match( $pattern, $tag2, $match, PREG_OFFSET_CAPTURE );
|
||||
if( count( $match ) < 1 ) $noFollow .= ' rel="nofollow" ';
|
||||
$pos = strpos( $url, $site_url );
|
||||
if( $pos === false ){
|
||||
$tag = rtrim( $tag, '>' );
|
||||
$tag .= $noFollow . '>';
|
||||
$content = str_replace( $tag2, $tag, $content );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
add_filter( 'the_content', 'Bing_post_auto_nofollow_blank', 14 );
|
||||
|
||||
/**
|
||||
* 文章编辑器功能扩展
|
||||
*/
|
||||
function Bing_editor_add_functions( $buttons ){
|
||||
array_push( $buttons, 'fontselect', 'fontsizeselect', 'backcolor', 'underline', 'hr', 'sub', 'sup', 'cut', 'copy', 'paste', 'cleanup', 'wp_page', 'newdocument' );
|
||||
return $buttons;
|
||||
}
|
||||
add_filter( 'mce_buttons_3', 'Bing_editor_add_functions' );
|
||||
|
||||
/**
|
||||
* 自定义头部代码
|
||||
*/
|
||||
function Bing_custom_head_code(){
|
||||
echo Bing_mpanel( 'head_code' );
|
||||
}
|
||||
add_action( 'wp_head', 'Bing_custom_head_code', 14 );
|
||||
|
||||
/**
|
||||
* 自定义底部代码
|
||||
*/
|
||||
function Bing_custom_footer_code(){
|
||||
echo Bing_mpanel( 'footer_code' );
|
||||
}
|
||||
add_action( 'wp_footer', 'Bing_custom_footer_code', 14 );
|
||||
|
||||
/**
|
||||
* 获取页面标题标签
|
||||
*
|
||||
* @since Beginning 4.0.0
|
||||
*/
|
||||
function Bing_get_page_title_tag() {
|
||||
return Bing_mpanel( 'headings_tags_downgrade' ) ? 'h2' : 'h1';
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主列表标题标签
|
||||
*
|
||||
* @since Beginning 4.0.0
|
||||
*/
|
||||
function Bing_get_main_list_title_tag() {
|
||||
return Bing_mpanel( 'headings_tags_downgrade' ) ? 'h3' : 'h2';
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取本地化文件路径
|
||||
*
|
||||
* @since Beginning 4.0.1
|
||||
*/
|
||||
function Bing_get_locale_filename() {
|
||||
$locale = get_locale();
|
||||
|
||||
if ( validate_file( $locale ) != 0 )
|
||||
return false;
|
||||
|
||||
$filename = get_template_directory() . '/languages/';
|
||||
$filename .= $locale . '.php';
|
||||
|
||||
if ( !is_file( $filename ) )
|
||||
return false;
|
||||
|
||||
return $filename;
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果存在则引入本地化文件
|
||||
*
|
||||
* @since Beginning 4.0.1
|
||||
* @see Bing_get_locale_filename()
|
||||
*/
|
||||
function Bing_maybe_include_locale_file() {
|
||||
if ( $filename = Bing_get_locale_filename() )
|
||||
include( $filename );
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成 HTML 标签参数的代码
|
||||
*
|
||||
* @since Beginning 4.0.4
|
||||
*/
|
||||
function Bing_render_attributes( $atts ) {
|
||||
$attributes = '';
|
||||
|
||||
foreach ( $atts as $name => $value ) {
|
||||
if ( !isset( $value ) ) {
|
||||
$attributes .= ' ' . $name;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( is_object( $value ) )
|
||||
$value = get_object_vars( $value );
|
||||
|
||||
if ( is_array( $value ) )
|
||||
$value = wp_json_encode( $value );
|
||||
|
||||
$filter = in_array( $name, array( 'href', 'src' ) ) ? 'esc_url' : 'esc_attr';
|
||||
$value = call_user_func( $filter, $value );
|
||||
|
||||
$attributes .= " $name='$value'";
|
||||
}
|
||||
|
||||
return $attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取网站 Favicon 图标
|
||||
*
|
||||
* @since Beginning 4.1.0
|
||||
*/
|
||||
function Bing_get_website_favicon( $domain ) {
|
||||
$name = base_convert( md5( $domain ), 16, 32 );
|
||||
$name = '/' . substr( $name, 0, 12 ) . '.png';
|
||||
|
||||
$filename = WP_CONTENT_DIR . THEME_FAVICON_PATH . $name;
|
||||
$file_url = content_url( THEME_FAVICON_PATH . $name );
|
||||
|
||||
if ( file_exists( $filename ) )
|
||||
return $file_url;
|
||||
|
||||
$api = new Bing_Remote_Application_Programming_Interface( 'favicon/stream/' );
|
||||
$api->data = compact( 'domain' );
|
||||
|
||||
if ( $api->request() && ( $body = $api->get_body() ) != 'Error: Not favicon.' )
|
||||
$favicon = $body;
|
||||
else
|
||||
$favicon = file_get_contents( get_template_directory() . '/images/favicon.png' );
|
||||
|
||||
$dir = WP_CONTENT_DIR . THEME_FAVICON_PATH;
|
||||
Bing_build_empty_index( $dir );
|
||||
|
||||
if ( !file_put_contents( $filename, $favicon ) )
|
||||
return get_template_directory_uri() . '/images/favicon.png';
|
||||
|
||||
return $file_url;
|
||||
}
|
||||
|
||||
// End of page.
|
||||
Reference in new issue
Block a user