wordpress主题完全研究

23 篇文章 0 订阅
 style.css中声明主题信息的代码:

/*
ThemeName: 这里填主题名称
ThemeURI: 这里填主题介绍的网址,没有就填你的博客网址

Description: 这里填主题的简短介绍
Version: 版本号
Author: 作者名
AuthorURI: 作者的网址
Tags: 标签,多个用半角逗号隔开
*/


一,引入模板:
示例头部,header.php

<?php
get_header();
?>

尾部:

get_footer();


侧边:

get_sidebar();


1,公共头部中title的动态调用:

<title><?php if ( is_home() ) {
bloginfo('name'); echo " - ";
bloginfo('description');
} elseif ( is_category() ) {
single_cat_title(); echo " - ";
bloginfo('name');
} elseif (is_single() || is_page() ) {
single_post_title();
} elseif (is_search() ) {
echo "搜索结果"; echo " - ";
bloginfo('name');
} elseif (is_404() ) {
echo '页面未找到!';
} else {
wp_title('',true);
} ?></title>


2,输出style.css的绝对路径

<?php bloginfo('stylesheet_url');?>


3,输出当前主题的绝对路径

?php
bloginfo('template_url');?>

或者常量 TEMPLATEPATH

<?php include (TEMPLATEPATH.'/searchform.php'); ?>

4,输出首页地址:

?php echo get_option('home');?>

5,输出名称

?php bloginfo('name');?>

6,输出描述

?php bloginfo('description');?>

以在WordPress管理后台 – 设置 – 常规那里更改。

7,RSS订阅

全部文章

?php
echoget_bloginfo('rss2_url');?>

所有评论

?php
bloginfo('comments_rss2_url');?>


8,wp_head();

些插件需要在网页头部添加一些js或css,要让这些插件能够正常的工作,也让你
的主题有更好的兼容性,你应该添加wp_head()函数。在公共头部Header.php添加即可。

9,自定义的keywords 和 descortion

https://www.ludou.org/wordpress-exp-1.html

10,列出菜单栏目

<?php wp_list_pages('depth=1&title_li=0&sort_column=menu_order'); ?>

11,刷新缓存

在<body>前面, </head>后面添加PHP代码, 用于提高程序运行效率: <?phpflush();?>

12,一些函数:

<?phpget_header();?> 从当前主题文件夹中包含header.php文件
 is_home(),is_single(),is_category()等几个条件判断标签
<?php bloginfo('stylesheet_url');?> 输出主题文件夹中style.css文件的路径
<?php bloginfo('pingback_url');?> 输出博客pingback网址
<?php bloginfo('template_url');?> 输出博客主题目录URL
<?php echo get_option('home');?> 输出你的博客首页网址
<?php bloginfo('name');?> 输出你的博客名称
<?php bloginfo('description');?> 输出博客描述
<?php wp_head();?> 用于包含WordPress程序输出头部信息
<?php wp_list_categories();?> 用于列出博客分类页
<?php wp_list_pages();?> 用于列出博客页面
<?php wp_get_archives('limit=10'); ?> 获取存档
<?php wp_tag_cloud('smallest=8&largest=22'); ?> 获取标签云

13,获取文章:


?php

$posts = get_posts('numberposts=6&orderby=post_date');
foreach($posts as $post) {
setup_postdata($post);
echo '<li><a href="' . get_permalink() . '">' . get_the_title() .
'</a></li>';
}

$post = $posts[0];
?>

14,获取标签

<?php the_tags('标签: ',',',
'');?>

15,获取时间

<?php the_time('Y年n月j
日') ?>


字符 说明 例子
d 月份中的第几天,有前导零的 2 位数字 01 到 31
D 星期中的第几天,文本表示, 3 个字母 Mon 到 Sun
j 月份中的第几天,没有前导零 1 到 31
l 星期几,完整的文本格式 Sunday 到 Saturday
S 每月天数后面的英文后缀, st, nd, rd 或者 th 可和 j 一起用
F 月份,完整的文本格式 January 到 December
m 数字表示的月份,有前导零 01 到 12
M 三个字母缩写表示的月份 Jan 到 Dec
n 数字表示的月份,没有前导零 1 到 12
y 4 位数字完整表示的年份 1999,2006
Y 2 位数字表示的年份 06


----------------------------------------
<?php the_author() ?>  获取作者

<?php the_category(',') ?>  获取分类
----------------------------------------

16,显示评论

<?php comments_popup_link('0 条评论','1 条评论','% 条评论','','评论已关
闭');?>

17,如果需要作者能够进行编辑文章

?php
<?php edit_post_link('编辑','&bull;','');?>

18,输出摘要
要在写文章的时候在"摘要"框内填写摘要,在首页显示的就是摘要,如果不填就输
出全文

<?php the_excerpt();?>

19,输出全文

<?php the_content('阅读全
文...');?>

20,遍历循环

<?php if(have_posts()):while(have_posts()):the_post(); ?>

<?php endwhile; ?>

。。。。。。。

<?php else : ?>

<?php endif; ?>


<?php if(have_posts()):while(have_posts()):

the_post();?>

文章html骨架

<?php endwhile;?>

<?php else:?>

输出找不到文章提示

<?php endif;?>


21,上一页,下一页

<p class="clearfix"><?php previous_posts_link('&lt;&lt; 查看新文章',0);?>
<span class="floatright"><?php next_posts_link('查看旧文章 &gt;&gt;',0);?></span></p>

评论的上一条,下一条

<div class="alignleft"><?phpprevious_comments_link() ?>

<div class="alignright"><?php next_comments_link() ?></div>

22,获取评论页面

comment.php

<?php

comments_template(); ?>

23,防止comment.php被恶意直接打开:

<?php

if(isset($_SERVER['SCRIPT_FILENAME'])&&'comments.php'==
basename($_SERVER['SCRIPT_FILENAME']))
die('Pleasedonotloadthispagedirectly.Thanks!');

?>

24,关于评论的函数


get_avatar($comment, 48) 获取评论者的gravatar头像, 尺寸为48*48
comment_reply_link() 回复留言的链接
get_comment_author_link() 用于获取评论者博客地址
get_comment_time('Y-m-d H:i') 获取评论发布时间
edit_comment_link('修改') 管理员修改评论的链接
comment_text() 输出评论内容

25,调用评论的页面,即comment.php文件中的内容

?php

if (!empty($post->post_password) && $_COOKIE['wp-postpass_' . COOKIEHASH] !=
$post->post_password) {
// if there's a password
// and it doesn't match the cookie
?>
<li class="decmt-box">
<p><a href="#addcomment">请输入密码再查看评论内容.</a></p>
</li>
<?php
} else if ( !comments_open() ) {
?>
<li class="decmt-box">
<p><a href="#addcomment">评论功能已经关闭!</a></p>
</li>

<?php
} else if ( !have_comments() ) {
?>
<li class="decmt-box">
<p><a href="#addcomment">还没有任何评论,你来说两句吧</a></p>
</li>
<?php
} else {
wp_list_comments('type=comment&callback=aurelius_comment');
}
?>

26,评论中的一些函数

is_user_logged_in 判断用户是否登录
wp_login_url 博客登录地址
get_comment_author_link 用于获取评论者博客地址
$comment_author
读取cookie,如果该用户之前已经发表过评论则自动帮
助用户填写用户名
$comment_author_email
读取cookie,如果该用户之前已经发表过评论则自动帮
助用户填写Email
$comment_author_url
读取cookie,如果该用户之前已经发表过评论则自动帮
助用户填写博客地址
do_action('comment_form’,
$post->ID);
该函数为某些插件预留
wp_logout_url 退出登录的链接

27,查询

<?php if (have_posts()) : the_post();
update_post_caches($posts); ?>

28,域名

bloginfo('url')

29,searchform.php

<form method="post" id="searchform"
action="<?php bloginfo('url'); ?>/">
<input type="text" value="<?php the_search_query(); ?>"
name="s" id="s" autocomplete="off" />
<input type="submit" id="searchsubmit" value="Search" />
</form>

30,评论的一种实现:

<?php $i=1; foreach ($comments as $comment) : ?>

<li id="comment-<?php comment_ID() ?>" <?php if

($comment->comment_author_email == get_the_author_email()) echo

'class="admin"'; ?> >

判断评讳者邮箱是丌是和作者邮箱符合,如果符合,就添加一个叨做 admin 类别,
在 css 样式化,可以把作者评讳和一般游客评讳醒目区别开来


31,显示头像

<?php echo get_avatar( $comment,
); ?></div>

32,是否设置注册后才能评论

get_option('comment_registration');

33,登录页地址

wp_login_url( get_permalink() ) ;

退出一个道理:

<?php echo wp_logout_url(get_permalink()); ?>

如果有get_permalink()参数,那么登录完毕则会跳转到来源页面

34,判断是否开启了评论

if ( comments_open() )


35,登录后的用户名

$user_identity


可以先判断是否有评论 have_comments(),,然后展示,然后else判断是否开启,如果开启则说明没有评论,如果没有开启则输出未开启评论


36, _e 与 echo  

<?php _e('Log out &raquo;'); ?> ===  <?php echo ('Log out &raquo;'); ?>   &raquo; 为 >>


37,printf 的格式化输出

<?php printf(__('Logged in as <a href="%1$s">%2$s</a>.'),
get_option('siteurl') . '/wp-admin/profile.php',
$user_identity); ?>  括号中的两个下划线可以不用

38,form 表单的一个函数

<?php do_action('comment_form', $post->ID); ?>

39,对数据库进行操作


<?php $result = $wpdb->get_results("SELECT
comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count
DESC LIMIT 0 , 6"); ?>

40,一个完整的最热文章和评论显示例子

<?php $result = $wpdb->get_results("SELECT
comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count
DESC LIMIT 0 , 6");
对数据库迚行操作,数据库里选择 comment_count,ID,post_title 这三个部凾,按照
comment_count 排序,然后限制叧提叏最前面六条,你可以修改 6 这个数字,改成你
想显示条数
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$commentcount = $post->comment_count;
if ($commentcount != 0) { ?>
<li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo
$title ?>">
<?php echo $title ?></a> {<?php echo $commentcount ?>}</li>
显示文章
<?php } } ?>
</ul>
</div>
接下去部凾显示最新评讳
<div class="recent-comments">
<h3>Recent Comments</h3>
<ul>
<?php
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
comment_post_ID, comment_author, comment_date_gmt,
comment_approved,comment_type,comment_author_url,49
SUBSTRING(comment_content,1,36) AS com_excerpt
你可以将 36 改成你想显示每条评讳字数
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND
post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT 4";
你可以把 4 改成你想显示评条数
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
foreach ($comments as $comment) {
$output .= "<li>".strip_tags($comment->comment_author).": ". "<a
href=\"" .
get_permalink($comment->ID).
"#comment-" . $comment->comment_ID . "\" title=\"on ".
$comment->post_title . "\"><br />" .
strip_tags($comment->com_excerpt)
."</a>"."</li>";}
$output .= $post_HTML;echo $output;?>
</ul>
</div


>


41,根据日志标签来显示相关日子,必须放在 loop 里

<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
echo 'Related Posts';
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>5,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<p><a href="<?php the_permalink() ?>" rel="bookmark"
title="Permanent Link to <?php the_title_attribute(); ?>"><?php
the_title(); ?></a></p>
<?php
endwhile;
}
}
?>

42,如果你想在 sidebar 戒者其他地方显示你最新収表文章,你可以加入这举一句话
<?php get_archives('postbypost',5); ?>
其中 5 是你想要显示文章标题数目


43,显示特定分类的文章
如果你页面布局比较另类,比如将文章按凾类集中到一起显示,而丌是按照时间顺序将所
有日子排列到一起,那举你该试试下面方法,这殌代码列出凾类 1 中最新 5 篇文章
<?php query_posts('cat=1&showposts=5'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<h2><a href="<?php the_permalink() ?>" rel="bookmark" >
<?php the_title(); ?></a></h2>
<?php endwhile; ?>
<?php endif; ?>

44,随机顺序显示日志
将下面一行代码放到 loop 前,就可以以随机顺序来显示日志了
<?php query_posts('orderby=rand');?>


附录 A:常用函数*
Wordpress Header 头部 PHP 代码
<?php bloginfo('name'); ?>
网站标题
<?php wp_title(); ?>
日志戒页面标题
<?php bloginfo('stylesheet_url'); ?>
Wordpress 主题样式表文件 style.css 相对地址
<?php bloginfo('pingback_url'); ?>
Wordpress 博客 Pingback 地址
<?php bloginfo('template_url'); ?>
Wordpress 主题文件相对地址
<?php bloginfo('version'); ?>
博客 Wordpress 版本
<?php bloginfo('atom_url'); ?>
Wordpress 博客 Atom 地址
<?php bloginfo('rss2_url'); ?>
Wordpress 博客 RSS2 地址
<?php bloginfo('url'); ?>
Wordpress 博客绝对地址
<?php bloginfo('name'); ?>
Wordpress 博客名称
<?php bloginfo('HTML_type'); ?>
网站 HTML 版本
<?php bloginfo('charset'); ?>
网站字符编码格式



Wordpress 主体模板 PHP 代码
<?php the_content(); ?>
日志内容
<?php if(have_posts()) : ?>
确认是否有日志
<?php while(have_posts()) : the_post(); ?>
如果有,则显示全部日志
<?php endwhile; ?>
结束 PHP 凼数” while”
<?php endif; ?>
结束 PHP 凼数” if”
<?php get_header(); ?>
header.php 文件内容
<?php get_sidebar(); ?>
sidebar.php 文件内容
<?php get_footer(); ?>
footer.php 文件内容
<?php the_time('m-d-y') ?>
显示格式为” 02-19-08″日期
<?php comments_popup_link(); ?>
显示一篇日志留觊链接
<?php the_title(); ?>
显示一篇日志戒页面标题
<?php the_permalink() ?>
显示一篇日志戒页面永丽链接/URL 地址
<?php the_category(', ‗) ?>
显示一篇日志戒页面所属凾类
<?php the_author(); ?>70
显示一篇日志戒页面作者
<?php the_ID(); ?>
显示一篇日志戒页面 ID
<?php edit_post_link(); ?>
显示一篇日志戒页面编辑链接
<?php get_links_list(); ?>
显示 Blogroll 中链接
<?php comments_template(); ?>
comments.php 文件内容
<?php wp_list_pages(); ?>
显示一份博客页面列表
<?php wp_list_cats(); ?>
显示一份博客凾类列表
<?php next_post_link(' %link) ?>
下一篇日志 URL 地址
<?php previous_post_link('%link') ?>
上一篇日志 URL 地址
<?php get_calendar(); ?>
调用日历
<?php wp_get_archives() ?>
显示一份博客日期存档列表
<?php posts_nav_link(); ?>
显示较新日志链接(上一页)和较旧日志链接(下一页)
<?php bloginfo('description'); ?>
显示博客描述信息

其它的一些 Wordpress 模板代码
/%postname%/
显示博客癿自定丿永丽链接
<?php the_search_query(); ?>
搜索表单癿值
<?php _e(‘Message‘); ?>
打印输出信息
<?php wp_register(); ?>
显示注册链接
<?php wp_loginout(); ?>
显示登入/登出链接
<!–next page–>
在日志戒页面中揑入凾页
<!–more–>
截断日志
<?php wp_meta(); ?>
显示管理员癿相关控制信息
<?php timer_stop(1); ?>
显示载入页面癿时间
<?php echo get_num_queries(); ?>
显示载入页面查询
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值