用Wordpress建站的初学者一定会需要用到的Wordpress模板主题中functions.php常用功能代码与常用插件。慢慢持续收集整理.......
目录
一、Wordpress模板主题中functions文件常用的代码
二、Wordpress自定义字段的设定与调用代码(系统常规自定义字段)
三、wordpress分类栏目添加自定义字段 (例如栏目图片)
四、文章页自定义字段添加与调用标签
五、单页自定义字段添加与调用标签
'边栏1',
'id' => 'sidebar-1',
'description' => '第一个边栏',
'before_widget' => '',
'after_widget' => ' ',
'before_title' => '',
'after_title' => '
',
));
// 注册第二个边栏
register_sidebar( array(
'name' => '边栏2',
'id' => 'sidebar-2',
'description' => '第二个边栏',
'before_widget' => '',
'after_widget' => ' ',
'before_title' => '',
'after_title' => '
',
));
}
add_action( 'widgets_init', 'wpdf_register_sidebar' );
//删除wp-nav-menu函数菜单中多余的css选择器
add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1);
add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1);
add_filter('page_css_class', 'my_css_attributes_filter', 100, 1);
function my_css_attributes_filter($var) {
return is_array($var) ? array() : '';
}
//移除后台用不到的菜单
function yg_remove_menu_page() {
//remove_menu_page('themes.php'); // 移除 "外观"
//remove_menu_page('plugins.php'); // 移除 "插件"
//remove_menu_page('tools.php'); // 移除 "工具"
remove_submenu_page('tools.php','export.php'); //移除工具下的导出
}
add_action( 'admin_menu', 'yg_remove_menu_page' );
//开启wordpress友情链接管理
add_filter( 'pre_option_link_manager_enabled', '__return_true' );
//开启wordpress特色图片
add_theme_support( 'post-thumbnails' );
//WordPress子分类页面使用父页面模板
add_filter('category_template', 'f_category_template');
function f_category_template($template){
$category = get_queried_object();
if($category->parent !='0'){
while($category->parent !='0'){
$category = get_category($category->parent);
}
}
$templates = array();
if ( $category ) {
$templates[] = "category-{$category->slug}.php";
$templates[] = "category-{$category->term_id}.php";
}
$templates[] = 'category.php';
return locate_template( $templates );
}
/**分页 前端调用 post_count;
if(empty($paged))$paged = 1;
$prev = $paged - 1;
$next = $paged + 1;
$range = 2; // only edit this if you want to show more page-links
$showitems = ($range * 2)+1;
$pages = ceil($total_posts/$posts_per_page);
if(1 != $pages){
echo "";
echo ($paged > 2 && $paged+$range+1 > $pages && $showitems < $pages)? "最前":"";
echo ($paged > 1 && $showitems < $pages)? "上一页":"";
for ($i=1; $i <= $pages; $i++){
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )){
echo ($paged == $i)? "".$i."":"".$i."";
}
}
echo ($paged < $pages && $showitems < $pages) ? "下一页" :"";
echo ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) ? "最后":"";
echo "\n";
}
}
//面包屑导航
function wz(){
$cat=get_the_category();
$cat=$cat[0];
$positions = ''.$cat->name. ' >';
if(!is_home() ){
echo ''. '首页> ';
if(is_category()){
echo $positions;
}
elseif(is_single()){
echo $positions ;
echo the_title();
}
elseif(is_search()){echo $s;}
elseif(is_page()){
the_title();
}elseif(is_404()){echo '404错误页面';}
}
}
//获取当前分类子分类列表
function get_category_root_id($cat){
$this_category = get_category($cat); // 取得当前分类
while($this_category->category_parent) {// 若当前分类有上级分类时,循环
$this_category = get_category($this_category->category_parent); // 将当前分类设为上级分类(往上爬)
}
return $this_category->term_id; // 返回根分类的id号
}
//分类目录后加 /
function nice_trailingslashit($string, $type_of_url) {
if ( $type_of_url != 'single' )
$string = trailingslashit($string);
return $string;
}
add_filter('user_trailingslashit', 'nice_trailingslashit', 10, 2);
//移除WordPress后台顶部左上角的W图标
add_action('wp_before_admin_bar_render', 'annointed_admin_bar_remove', 0);
function annointed_admin_bar_remove() {
global $wp_admin_bar;
/* Remove their stuff */
$wp_admin_bar->remove_menu('wp-logo');
}
//自定义后台登录Logo的Url
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
return 'http://www.nongyejing.com';
}
// 自定义 WordPress 后台底部的版权和版本信息
add_filter('admin_footer_text', 'left_admin_footer_text');
function left_admin_footer_text($text) {
// 左边信息
$text = '左边版权信息';
return $text;
}
add_filter('update_footer', 'right_admin_footer_text', 11);
function right_admin_footer_text($text) {
// 右边信息
$text = "这是右边信息";
return $text;
}
//屏蔽 WP 后台“显示选项”和“帮助”选项卡
add_filter('screen_options_show_screen', 'remove_screen_options');
add_filter( 'contextual_help', 'remove_wp_help', 999, 3 );
function remove_screen_options(){ return false;}
function remove_wp_help($old_help, $screen_id, $screen){
$screen->remove_help_tabs();
return $old_help;
}
//固定后台管理侧边栏
add_action('admin_head', 'Bing_fixed_adminmenuwrap');
function Bing_fixed_adminmenuwrap(){
echo '';
}
//阻止站内文章互相Pingback
add_action('pre_ping','Bing_noself_ping');
function Bing_noself_ping($links) {
$home = get_option( 'home' );
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, $home ) )
unset($links[$l]);
}
// 增强默认编辑器(mce_buttons:工具栏的第一行;mce_buttons_2:工具栏第二行;mce_buttons_3:工具栏第三行)
add_filter("mce_buttons", "Bing_editor_buttons");
function Bing_editor_buttons($buttons){
//$buttons[] = 'wp_adv'; //隐藏按钮显示开关
$buttons[] = 'wp_adv_start'; //隐藏按钮区起始部分
$buttons[] = 'wp_adv_end'; //隐藏按钮区结束部分
//$buttons[] = 'bold'; //加粗
//$buttons[] = 'italic'; //斜体
$buttons[] = 'underline'; //下划线
$buttons[] = 'strikethrough'; //删除线
$buttons[] = 'justifyleft'; //左对齐
$buttons[] = 'justifycenter'; //居中
$buttons[] = 'justfyright'; //右对齐
$buttons[] = 'justfyfull'; //两端对齐
//$buttons[] = 'bullist'; //无序列表
//$buttons[] = 'numlist'; //编号列表
$buttons[] = 'outdent'; //减少缩进
$buttons[] = 'indent'; //缩进
$buttons[] = 'cut'; //剪切
$buttons[] = 'copy'; //复制
$buttons[] = 'paste'; //粘贴
$buttons[] = 'undo'; //撤销
$buttons[] = 'redo'; //重做
//$buttons[] = 'link'; //插入超链接
$buttons[] = 'unlink'; //取消超链接
$buttons[] = 'image'; //插入图片
$buttons[] = 'removeformat'; //清除格式
$buttons[] = 'code'; //打开HTML代码编辑器
$buttons[] = 'hr'; //水平线
$buttons[] = 'cleanup'; //清除冗余代码
$buttons[] = 'formmatselect'; //格式选择
$buttons[] = 'fontselect'; //字体选择
$buttons[] = 'fontsizeselect'; //字号选择
$buttons[] = 'styleselect'; //样式选择
$buttons[] = 'sub'; //上标
$buttons[] = 'sup'; //下标
$buttons[] = 'forecolor'; //字体颜色
$buttons[] = 'backcolor'; //字体背景色
$buttons[] = 'charmap'; //特殊符号
$buttons[] = 'anchor'; //锚文本
$buttons[] = 'newdocument'; //新建文本
//$buttons[] = 'wp_more'; //插入more标签
$buttons[] = 'wp_page'; //插入分页标签
$buttons[] = 'spellchecker'; //拼写检查
$buttons[] = 'wp_help'; //帮助
//$buttons[] = 'selectall'; //全选
//$buttons[] = 'visualaid'; //显示/隐藏指导线和不可见元素
$buttons[] = 'spellchecker'; //切换拼写检查器状态
$buttons[] = 'pastetext'; //以纯文本粘贴
$buttons[] = 'pasteword'; //从Word中粘贴
//$buttons[] = 'blockquote'; //引用
$buttons[] = 'forecolorpicker'; //选择文字颜色(拾色器)
$buttons[] = 'backcolorpicker'; //选择背景颜色(拾色器)
$buttons[] = 'spellchecker'; //切换拼写检查器状态
return $buttons;
}
//TinyMCE编辑器增强:增加中文字体
add_filter('tiny_mce_before_init', 'custum_fontfamily');
function custum_fontfamily($initArray){
$initArray['font_formats'] = "微软雅黑='微软雅黑';宋体='宋体';黑体='黑体';仿宋='仿宋';楷体='楷体';隶书='隶书';幼圆='幼圆';Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings";
return $initArray;
}
//更改编辑器默认视图为HTML
//add_filter('wp_default_editor', create_function('', 'return "html";'));
//在 WordPress 编辑器中为自定义文章类型设置默认内容
add_filter( 'default_content', 'my_editor_content', 10, 2 );
function my_editor_content( $content, $post ) {
switch( $post->post_type ) {
case 'sources':
$content = 'your content';
break;
case 'stories':
$content = 'your content';
break;
case 'pictures':
$content = 'your content';
break;
default:
$content = 'your default content';
break;
}
return $content;
}
//添加编辑器默认内容(此方法添加的内容在发布文章时自动添加在内容的最后,在编辑的时候是看不见的)
add_filter ('the_content', 'insertFootNote');
function insertFootNote($content) {
if(!is_feed() && !is_home()) {
$content.= "这里的预定义内容在编辑器不可见";
}
return $content;
}
//为编辑器添加更多的HTML标签
add_filter('tiny_mce_before_init', 'fb_change_mce_options');
function fb_change_mce_options($initArray) {
$ext = 'pre[id|name|class|style],iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]'; //注意:格式为“标签一[属性一|属性二],标签二[属性一|属性二|属性三]”
if ( isset( $initArray['extended_valid_elements'] ) ) {
$initArray['extended_valid_elements'] .= ',' . $ext;
} else {
$initArray['extended_valid_elements'] = $ext;
}
return $initArray;
}
//让编辑器支持中文拼写检查
add_filter('tiny_mce_before_init', 'fb_mce_external_languages');
function fb_mce_external_languages($initArray){
$initArray['spellchecker_languages'] = '+Chinese=zh,English=en';
return $initArray;
}
//更改后台字体
add_action('admin_head', 'Bing_admin_lettering');
function Bing_admin_lettering(){
//echo '';//修改字体
}
//WordPress 后台回复评论添加提交快捷键[Ctrl+Enter]
add_action('admin_footer', 'Bing_admin_comment_ctrlenter');
function Bing_admin_comment_ctrlenter(){
echo '';
}
//WordPress 让后台用户列表可以根据文章数进行排序
if ( ! class_exists('Sort_Users_By_Post_Count') ) {
class Sort_Users_By_Post_Count {
function Sort_Users_By_Post_Count() {
// Make user table sortable by post count
add_filter( 'manage_users_sortable_columns', array( $this, 'add_custom_user_sorts' ) );
}
/* Add sorting by post count to user page */
function add_custom_user_sorts( $columns ) {
$columns['posts'] = 'post_count';
return $columns;
}
}
$Sort_Users_By_Post_Count = new Sort_Users_By_Post_Count();
}
//WordPress 4.3+ 默认开启页面的评论功能
add_filter( 'get_default_comment_status', 'wp33516_open_comments_for_pages', 10, 3 );
function wp33516_open_comments_for_pages( $status, $post_type, $comment_type ) {
if ( 'page' === $post_type ) {
$status = 'open';
}
return $status;
}
//将WordPress后台的open-sans字体加载源从Google Fonts换为360 CDN
add_action( 'init', 'wpdx_replace_open_sans' );
function wpdx_replace_open_sans() {
wp_deregister_style('open-sans');
wp_register_style( 'open-sans', '//fonts.useso.com/css?family=Open+Sans:300italic,400italic,600italic,300,400,600' );
if(is_admin()) wp_enqueue_style( 'open-sans');
}
//WordPress 关闭 XML-RPC 的 pingback 端口
add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback_ping' );
function remove_xmlrpc_pingback_ping( $methods ) {
unset( $methods['pingback.ping'] );
return $methods;
}
//禁用 WordPress 的 JSON REST API
add_filter('json_enabled', '__return_false');
add_filter('json_jsonp_enabled', '__return_false');
//禁止WordPress压缩JGP图片质量
add_filter( 'jpg_quality', 'high_jpg_quality' );
function high_jpg_quality() {
return 100;
}
//WordPress 隐藏特定插件的更新提示
//add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );
function filter_plugin_updates( $value ) {
unset( $value->response['plugin-directory/plugin-file.php'] );
return $value;
}
//隐藏核心更新提示 WP 3.0+
//add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );
//隐藏插件更新提示 WP 3.0+
//remove_action( 'load-update-core.php', 'wp_update_plugins' );
//add_filter( 'pre_site_transient_update_plugins', create_function( '$b', "return null;" ) );
//隐藏主题更新提示 WP 3.0+
//remove_action( 'load-update-core.php', 'wp_update_themes' );
//add_filter( 'pre_site_transient_update_themes', create_function( '$c', "return null;" ) );
//新用户预设默认的后台配色方案
add_action('user_register', 'set_default_admin_color');
function set_default_admin_color($user_id) {
$args = array(
'ID' => $user_id,
'admin_color' => 'sunrise'
);
wp_update_user( $args );
}
//对非管理员移除配色方案设置选项
if ( !current_user_can('manage_options') ){
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
}
//移除 WordPress 仪表盘欢迎面板
//remove_action('welcome_panel', 'wp_welcome_panel');
//自定义 WordPress 仪表盘欢迎面板
//add_action( 'welcome_panel', 'rc_my_welcome_panel' );
function rc_my_welcome_panel() {
?>
- ' . __( 'Edit your front page' ) . '', get_edit_post_link( get_option( 'page_on_front' ) ) ); ?>
- ' . __( 'Add additional pages' ) . '', admin_url( 'post-new.php?post_type=page' ) ); ?>
- ' . __( 'Edit your front page' ) . '', get_edit_post_link( get_option( 'page_on_front' ) ) ); ?>
- ' . __( 'Add additional pages' ) . '', admin_url( 'post-new.php?post_type=page' ) ); ?>
- ' . __( 'Add a blog post' ) . '', admin_url( 'post-new.php' ) ); ?>
- ' . __( 'Write your first blog post' ) . '', admin_url( 'post-new.php' ) ); ?>
- ' . __( 'Add an About page' ) . '', admin_url( 'post-new.php?post_type=page' ) ); ?>
- ' . __( 'View your site' ) . '', home_url( '/' ) ); ?>
', admin_url( 'widgets.php' ), admin_url( 'nav-menus.php' ) ); ?>
' . __( 'Turn comments on or off' ) . '', admin_url( 'options-discussion.php' ) ); ?>
' . __( 'Learn more about getting started' ) . '', __( 'http://codex.wordpress.org/First_Steps_With_WordPress' ) ); ?>
延农业经网成立于2015年6月20日,一个农业新媒体资讯平台。提供一站式的农业+互联网综合解决方案!
和最后一个
$content = str_replace('', '
', $content); return $content; } //WordPress 后台文章列表根据文章状态添加不同背景色 add_action('admin_footer','posts_status_color'); function posts_status_color(){ ?> post_type ) { $title = '输入文章标题'; } elseif ('page' == $screen->post_type) { $title = '输入页面标题'; } elseif ('book' == $screen->post_type) { $title = '输入书籍标题'; } return $title; } //让WordPress记住不同主题下所选择的的页面模板 add_action( "updated_post_meta", "rmt_update_post_template_meta", 10, 4 ); add_action( "added_post_meta", "rmt_update_post_template_meta", 10, 4 ); function rmt_update_post_template_meta( $meta_id, $post_id, $meta_key, $meta_value ){ if( '_wp_page_template' === $meta_key ){ $theme = wp_get_theme(); $name = $theme->template; if( $name ){ update_post_meta( $post_id, '_wp_page_template_' . $name, $meta_value ); } } } add_filter( 'get_post_metadata', 'rmt_get_post_template_meta', 10, 4 ); function rmt_get_post_template_meta( $value, $post_id, $meta_key, $single ){ if( '_wp_page_template' === $meta_key ){ $theme = wp_get_theme(); $name = $theme->template; if( $name ){ $template = get_post_meta( $post_id, '_wp_page_template_' . $name, $single ); if( $template && locate_template( $template ) ){ $value = $template; } } } return $value; } //在媒体库显示文件尺寸 //add_filter('manage_upload_columns', 'size_column_register'); function size_column_register($columns) { $columns['dimensions'] = __('Dimensions'); return $columns; } //add_action('manage_media_custom_column', 'size_column_display', 10, 2); function size_column_display($column_name, $post_id) { if( 'dimensions' != $column_name || !wp_attachment_is_image($post_id)) return; list($url, $width, $height) = wp_get_attachment_image_src($post_id, 'full'); echo esc_html("{$width}×{$height}"); } //在媒体编辑页面显示文件大小 //add_action( 'attachment_submitbox_misc_actions', 'mc_attachment_submitbox_filesize' ); function mc_attachment_submitbox_filesize() { $post = get_post(); $filesize = @filesize( get_attached_file( $post->ID ) ); if ( ! empty( $filesize ) && is_numeric( $filesize ) && $filesize > 0 ) : ?>
1、在wordpress主题文件functions.php中添加如下代码就可以添加一些我们常用的系统常规字段,在数据库表 wp_options 中保存。比如系统参数字段如:备案号、统计代码、phone,qq 为自定义字段名等。注:如果不知道字段名是什么可以在数据库表 wp_options查看,或者到function.php文件中找到你添加自定义字段的代码查看。
// 自定义系统字段
function set_global_fields() {
$global_fields = new GlobalFields();
$global_fields->setting_fields();
}
add_action( 'admin_init', 'set_global_fields' );
class GlobalFields
{
public function setting_fields()
{
$text_input = [
'contact' => '联系人',
'email' => '邮箱',
'address' => '地址',
'phone' => '电话',
'wechat' => '微信',
'qq' => 'QQ',
'copyright' => '备案号',
'seo_title' => 'seo标题',
'seo_keywords' => 'seo关键字',
];
$textarea_input = [ 'seo_description' => 'seo描述','tongji' => '统计代码' ];
foreach($text_input as $key => $val)
{
$this->sonliss_settings_field($key, $val, 'sonliss_textbox_callback', [$key]);
$this->sonliss_register_setting($key);
}
foreach($textarea_input as $key => $val)
{
$this->sonliss_settings_field($key, $val, 'sonliss_textareabox_callback', [$key]);
$this->sonliss_register_setting($key);
}
}
/**
* id ID
* title 显示在页面的标题即label
* callback 回调
* args []
*/
public function sonliss_settings_field($id, $title, $callback, $args)
{
add_settings_field(
$id,
$title,
[ $this, $callback ],
'general', // general, reading, writing, discussion, media
'default', // 块,对应add_settings_section的id
$args
);
}
/**
* id ID
*/
public function sonliss_register_setting($id)
{
register_setting('general', $id);
}
/**
* input text
*/
public function sonliss_textbox_callback($args) {
$option = get_option($args[0]);
echo '';
}
/**
* area
*/
public function sonliss_textareabox_callback($args) {
$option = get_option($args[0]);
echo '';
}
}
注:如果需要添加继续添加新的字段 单行文本 在$text_input =[] 添加新的字段名 多行文本 在$textarea_input =[] 添加新的字段
列:$textarea_input = [ 'seo_description' => 'seo描述','tongji' => '统计代码' ];
2、模板里调用:
1.添加方法,将下方代码复制到 function.php 中
输入分类封面图片URL
term_id;
// 获取已保存的option
$term_meta = get_option( "ludou_taxonomy_$term_id" );
// option是一个二维数组
$image = $term_meta['tax_image'] ? $term_meta['tax_image'] : '';
/**
* TODO: 在这里追加获取其他自定义字段值,如:
* $keywords = $term_meta['tax_keywords'] ? $term_meta['tax_keywords'] : '';
*/
?>
输入分类封面图片URL
2.模板中调用方法:
//$cat 默认为当前分类id seo-title自定义字段
//输出图片字段
//案例
1、添加
2、调用
1、普通自定义字段
2、自定义图片字段
1、添加
2、调用
1、普通自定义字段
2、自定义图片字段
//判断是否是具体文章的页面
//判断是否是具体文章(id=2)的页面
//判断是否是具体文章(标题判断)的页面
//判断是否是具体文章(缩略名判断)的页面
//是否留言开启
//是否开启ping
//是否是页面
//id判断,即是否是id为42的页面
//判断标题
//缩略名判断
//是否是分类
//id判断,即是否是id为6的分类
//分类title判断
//分类缩略名判断
//判断当前的文章是否属于分类5
//将所有的作者的页面显示出来
//显示author number为1337的页面
//通过昵称来显示当前作者的页面
//判断当前是否是归档页面
//判断是否是搜索
//判断页面是否404
//判断实现以年、月、日、时间等方式来显示归档
//循环标签(不同页面使用以上默认循环得到的结果是不同的)
//首页会输出所有分类下面的最新文章
//分类页会显示当前分类下的文章
//归档页会显示符合当前归档的文章
//内容页只会显示当前ID的文章
持续整理更新中........