wordpress主题修改常用函数


感觉自己的主题有一些需要改进的地方却不知道怎么修改?想添加一些文字却又不知道到哪里加?看不懂主题的目录结构?今天我将在这里一一解答

我们可以到自己的博客后台管理系统的外观里面的themeditor里面看到这里页面(不同主题页面是不一样的,下面都是以我的主题为例)

style.css(自定义样式表)这里就是可以加上自己定义的css样式,它可以对自己主题的任何页面生效

function.php(模板函数)这里主要是放了很多主题的一些函数,自己也可以在这里加上自己的函数然后调用

comments.php(评论)这里是评论板块的页面,如果需要修改样式可以在这里修改

footer.php(主题页脚)这里就是任何页面的页脚,主要用来显示版权信息还有放各种js脚本的地方

header.php(主题页眉)这里是最上面的部分,主要是显示导航栏还有一些css以及js的地方

index.php(首页模板)这里是自己主题的首页,用来显示主页的,大家可以在这里修改主页风格

options.php(设置模板)这里是我主题自己的一个设置界面,有的主题不一定有这个

page-archive.php(归档的模板)凡是前面带有page-的就是页面模板,大家在新建页面的时候就可以选择相应模板(比如我选这归档模板后这个页面就可以用来显示自己的文档归档)

page.php(单独页面)这里就是自己新建页面的默认模板

srearch.php(搜索结果模板)这里主要是用来展示搜索结果的

siderbar.php(边栏)这里就是我们页面的边栏显示的函数

single.php(文章页面)这里就是文章页面的界面,所有文章页面都是通过这个模板来显示的

还有一些其他的我就不介绍了。

下面我介绍一些常用的wordpress函数,这里可以用在自己需要修改的任何页面。

<?php site_url(); ?> 站点根链接
<?php wp_title(); ?> 文章或者静态页面标题
<?php bloginfo(‘name’); ?> 站点名称
<?php bloginfo(‘description’); ?> 站点描述
<?php get_stylesheet_directory(); ?> 样式文件所在目录
<?php bloginfo(‘stylesheet_url’); ?> 样式文件链接
<?php bloginfo(‘pingback_url’); ?> pingback 链接
<?php bloginfo(‘template_url’); ?> 模板文件所在目录链接
<?php bloginfo(‘version’); ?> WordPress 版本
<?php bloginfo(‘atom_url’); ?> atom 链接
<?php bloginfo(‘rss2_url’); ?> rss2 链接
<?php bloginfo(‘url’); ?> 网站根链接
<?php bloginfo(‘html_type’); ?> html 版本
<?php bloginfo(‘charset’); ?> 字符集

上面这些可以用来输出连接和目录以及信息,主要是用于添加自己的一些css和js文件,以及用于显示一些系统信息。

默认导航菜单
<?php wp_nav_menu(); ?>
指定的导航菜单
<?php wp_nav_menu( array(‘menu’ => ‘Project Nav’ )); ?>
基于分类的导航
<ul id=”menu”>
<li <?php if(is_home()) { ?> class=”current-cat” <?php } ?>>
<a href=”<?php bloginfo(‘home’); ?>”>Home</a></li>
<?php wp_list_categories(‘title_li=&orderby=id’);?>
</ul>
基于页面的导航
<ul id=”menu”>
<li <?php if(is_home()) { ?> class=”current-page-item” <?php } ?>>
<a href=”<?php bloginfo(‘home’); ?>”>Home</a></li>
<?php wp_list_pages(‘sort_column=menu_order&depth=1&title_li=’);?>
</ul>
<?php the_content(); ?> 文章内容
<?php if(have_posts()): ?> 检查是否有文章
<?php while(have_posts()): the_post(); ?> 显示文章
<?php endwhile; ?> 结束循环
<?php endif; ?> 结束判断
<?php get_header(); ?> 头部模板内容
<?php get_sidebar(); ?> 侧边栏模板内容
<?php get_footer(); ?> 底部模板内容
<?php the_time(‘m-d-y’); ?> 显示时间,格式为:’08-18-07′
<?php comments_popup_link(); ?> 显示到文章留言的链接
<?php the_title(); ?> 文章标题
<?php the_permalink(); ?> 文章链接
<?php the_category(); ?> 文章分类
<?php the_author(); ?> 文章作者
<?php the_ID(); ?> 文章 ID
<?php edit_post_link(); ?> 文章编辑链接
<?php wp_list_bookmarks(); ?> 友情链接列表
<?php comments_template(); ?> 留言模板内容
<?php wp_list_pages(); ?> 所有页面列表
<?php wp_list_categories(); ?> 所有分类列表
<?php next_post_link(‘%link’); ?> 下一篇文章链接
<?php previous_post_list(‘%link’); ?> 上一篇文章链接
<?php get_calendar(); ?> 显示文章日历
<?php wp_get_archives(); ?> 存档链接列表
<?php posts_nav_link(); ?> 上一篇和下一篇文章链接
<?php rewind_posts(); ?> 重回开头开始第二个循环

上面这些是显示文章的一些信息,主要用于文章界面,可以显示一些文章的信息。

其他函数

/%postname%/ 自定义固定链接
<?php include(TEMPLATEPATH . ‘/x’); ?> 从模板文件夹加载文件
<?php the_search_query(); ?> 搜索表单返回的值
<?php _e(‘Message’); ?> 返回翻译之后的文本
<?php wp_register(); ?> 注册链接
<?php wp_loginout(); ?> 登录/登出链接
<!–nextpage–> 将文章那个内容分页
<!–more–> 截断文章内容,并创建到全文的链接
<?php wp_meta(); ?> 管理元链接
<?php timer_start(); ?> 开始计时 (header.php)
<?php timer_stop(1); ?> 停止计时 (footer.php)
<?php echo get_num_queries(); ?>

显示生成当前页面所需的查询数

  • <?php _e(’Message’); ?> : 输出相应信息
  • <?php wp_register(); ?> : 显示注册链接
  • <?php wp_loginout(); ?> : 显示登录/注销链接
  • <!–next page–> : 将当前内容分页
  • <!–more–> : 将当前内容截断,以不在主页/目录页显示全部内容
  • <?php timer_stop(1); ?> : 网页加载时间(秒)
  • <?php echo get_num_queries(); ?> : 网页加载查询量


页面判断函数

函 数 名 称 用  法 说 明
is_home() <?php if(is_home())?> true 为首页,false 为第二页 判断是否为第一页
is_paged() <?php if(is_paged())?> 当页面为第二页时,?paged=2
is_single() <?php if(is_single())?>
<?php if(is_single(2))?>文章 id
<?php if(is_single(‘标题’))?>文章标题
是否为文章单一页面,如要针对特定文章时,可在()中加入文章的 ID 参数,或标题文字
is_page() <?php if(is_page())?>
<?php if(is_page(2))?>分页 id
<?php if(is_page(‘标题’))?>分页标题
是否为分页,与单一页面用法相同,在()中可再针对个別的分页 ID 与标题作判断
is_category() <?php if(is_category())?>
<?php if(is_category(2))?>分类 id
<?php if(is_category(‘标题’))?>分类标题
<?php if(is_category(array(6,7)))?>分类 id 为 6、7
<?php if(is_category(array(6,7,’minwt’)))?>分类 id 为 6、7 或 minwt
是否为分类,()中可输入分类 ID 与名称,再个別作判断
is_archive() <?php if(is_archive())?> 是否为存档页面
is_search() <?php if(is_search())?> 是否为搜索面
is_404 <?php if(is_404())?> 是否为找不到画面 404
is_tag() <?php if(is_tag())?> 是否为标签页面
is_date() <?php if(is_date())?> 是否为日期存档页面
is_year() <?php if(is_year())?> 是否为年份存档页面
is_month() <?php if(is_month())?> 是否为月份存档页面
is_day() <?php if(is_day())?> 是否为天存档页面

这里就可以通过判断相应的页面而显示相应的内容。

下面就介绍一些使用的函数

显示文章字数

主要原理就是通过新建一个自己的函数,然后在文章界面里面调用它就行了

//字数统计
function count_words ($text) {
global $post;
if ( '' == $text ) {
   $text = $post->post_content;
   if (mb_strlen($output, 'UTF-8') < mb_strlen($text, 'UTF-8')) $output .= '本文共有' . mb_strlen(preg_replace('/s/','',html_entity_decode(strip_tags($post->post_content))),'UTF-8') . '个字';
   return $output;
}
//调用方式
<?php echo count_words($text);?>

显示文章最后修改时间

这个就只需要在文章界面加入下面的PHP代码即可。

<?php if ((get_the_modified_time('Y')*365+get_the_modified_time('z')) > (get_the_time('Y')*365+get_the_time('z'))) : ?>最后修改于:
<?php the_modified_time('Y-m-j h:s l'); ?>
<?php else : ?>文章发布于:
<?php echo the_time('Y-m-j h:s l'); ?>
<?php endif; ?>

2019/6/9 :首页过滤指定分类目录文章

我们只需要在function.php函数文件里面添加下面这个函数就行了,只需要加上这个,其他的不用管:

//首页过滤指定分类目录文章
function excludeCat($query) {
if ( $query->is_home ) { //首页过滤指定分类,你可以指定其他页面
$query->set('cat', '-3',,'-5','-23'); //过滤分类ID为 3,5,23的分类文章
}
return $query;
}
add_filter('pre_get_posts', 'excludeCat');
?>

2019/7/16:没有注册者随机显示头像

这个也是同样需要自己在function.php中添加一个函数就可以了

在当前主题目录中新建一个名称为avatar的文件夹,里面放10张名称连续的jpg图片,比如1.jpg、2.jpg、3.jpg.........,和一张用于管理员的图片,名称为admin.jpg。

add_filter( 'get_avatar' , 'local_random_avatar' , 1 , 5 );
function local_random_avatar( $avatar, $id_or_email, $size, $default, $alt) {
        if ( ! empty( $id_or_email->user_id ) ) {
                $avatar = ''.get_template_directory_uri().'/avatar/admin.jpg';
        }else{
                $random = mt_rand(1, 10);
                $avatar = ''.get_template_directory_uri().'/avatar/'. $random .'.jpg';
        }
        $avatar = "{$alt}";
        return $avatar;
}

文章作者: 小游
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小游 !
  目录