之前提到过 《给 Lingonberry 主题建立子主题》。也记录过一部分修改子主题的 CSS 样式。接下来通过修改子主题的 functions.php
增加一些我们需要的功能。
例如:
- 禁用 Open Sans
- 取消 CSS 和 js 后面的版本号
- 取消 WordPress 默认 Gallery 样式
- 让 WordPress 编辑器所见即所得
- 加载 Font Awesome 样式
- 禁止 MORE 标签跳转到锚点
子主题的 functions.php
文件不像子主题的 style.css
,它不会覆盖父主题中已经写好的相对应功能,而是将新的功能加入到父主题的 functions.php 中(它会在父主题文件加载之前优先载入)。
因此,子主题的 functions.php 能更灵活的修改父主题。
最重要的一点:对于父主题以后的升级更新,子主题中加入的功能不会受到影响。
下面便是我修改的 Lingonberry 子主题 functions.php
的一些功能。
具体代码如下:
<?php
//禁用 Open Sans
add_filter( 'gettext_with_context', 'wpdx_disable_open_sans', 888, 4 );
function wpdx_disable_open_sans( $translations, $text, $context, $domain ) {
if ( 'Open Sans font: on or off' == $context && 'on' == $text ) {
$translations = 'off';
}
return $translations;
}
// 取消 css 和 js 后面的版本号
if(!function_exists('cwp_remove_script_version')){
function cwp_remove_script_version( $src ){ return remove_query_arg( 'ver', $src ); }
add_filter( 'script_loader_src', 'cwp_remove_script_version' );
add_filter( 'style_loader_src', 'cwp_remove_script_version' );
}
// 取消 wordpress 默认 Gallery 样式
add_filter( 'use_default_gallery_style', '__return_false' );
// 加载 CSS 样式到可视化编辑器
add_editor_style('custom-editor-style.css');
// 添加 CSS 类匹配可视化编辑器内容
function mytheme_mce_settings( $initArray ){
$initArray['body_class'] = 'post';
return $initArray;
}
add_filter( 'tiny_mce_before_init', 'mytheme_mce_settings' );
// 加载 fontawesome 样式
add_action( 'wp_enqueue_scripts', 'load_fontawesome_styles' );
function load_fontawesome_styles(){
global $wp_styles;
wp_enqueue_style( 'font-awesome', get_template_directory_uri() . '/font-awesome/css/font-awesome.min.css' );
wp_enqueue_style( 'font-awesome-ie7', get_template_directory_uri() . '/font-awesome/css/font-awesome-ie7.min.css' );
$wp_styles->add_data( 'font-awesome-ie7', 'conditional', 'lte IE 7' );
}
// 禁止 MORE 标签跳转到锚点
function remove_more_link_scroll( $link ) {
$link = preg_replace( '|#more-[0-9]+|', '', $link );
return $link;
}
add_filter( 'the_content_more_link', 'remove_more_link_scroll' );
?>
避免 <?php 和 ?>
多重嵌套,在 <?php
和 ?>
之间,不要再添加 <?php
和 ?>
。多重嵌套的后果会导致部分 PHP 代码失效,严重的可能会导致网站崩溃。