基于wordpress主题制作的具体实现步骤


Posted in PHP onMay 10, 2013
<?php
/*
在根目录 -> wp-content -> themes 下创建mytheme文件夹用来存放创建新主题模板
在mytheme目录下创建 index.php ,style.css 两个文件,在wp后台 外观->主题 中就可以看到刚创建的主题
打开style.css文件输入
*/
?>
/*
Theme Name: 这里填主题名称
Theme URI: 这里填主题介绍的网址,没有就填你的博客网址吧
Description:这里填主题的简短介绍
Author: 作者名
Author URI: 作者的网址
Version: 版本号
Tags: 标签,多个用半角逗号隔开
*/
<?php
/*
在后台主题管理中即可看到主题相关信息,css中主题信息内容必须用注释符号括起来
找一个300*225的png图片,命名为 screenshot.png 放在主题目录下(mytheme文件夹中),在主题管理页中即可看到新建主题的预览图片
//==================================================header================================================================
可以把网站相同头内容放在一个头文件中,在主题目录下新建 header.php 文件向其中输入输入 统一的头部内容
在 index.php 或想调用该header.php页面的页面中 输入
*/
get_header(); //get_header()就相当于将header.php中的代码拷贝到当前的php文件
/*
在主题管理页面,该主题实时预览中,默认打开的 index.php 页面中即可引入 header.php 页面的内容
header.php 将会被所有的模板页面(主页、分类页、页面、标签页等)所包含,所以 header.php 中代码应该是动态的。
不同页面的title都是不一样,而且title的设置还会直接影响到SEO的效果,所以这里应该谨慎设置。下面提供一种SEO优化的title写法,
在header.php页面添加
*/
?>
<title>
<?php
if (is_home ()) { // is_home() 当前页面为主页时返回true
    bloginfo ( 'name' ); // 返回站点标题
    echo " - ";
    bloginfo ( 'description' ); // 返回站点副标题,站点描述
} elseif (is_category ()) { // is_category() 当前页面为分类页时返回true
    single_cat_title ();
    echo " - ";
    bloginfo ( 'name' );
} elseif (is_single () || is_page ()) { // is_single() 当前页面为单文章页时返回true 。 is_page() 当前页面为单页面时返回true
    single_post_title ();
} elseif (is_search ()) { // is_search() 当前页面为搜索页时返回true
    echo "搜索结果";
    echo " - ";
    bloginfo ( 'name' );
} elseif (is_404 ()) { // is_404() 当前页面为404页时返回true
    echo '页面未找到!';
} else {
    wp_title ( '', true );
}
?>
</title>
<?php
/*
 以上添加的php代码运用了条件判断,针对不同的页面采用不同title
在 header.php 页面中添加默认 style.css 文件
*/
?>
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
<?php
/*
bloginfo('stylesheet_url');返回的是主题默认style.css文件绝对网址路径,如
http://localhost/wordpress/wp-content/themes/myTheme/style.css
bloginfo('template_url');返回的是主题目录的绝对网址路径,可以用来模板中连接样式图片,如
http://localhost/wordpress/wp-content/themes/mytheme
添加 pingback 通告功能,在header.php页面 <head> 标签中里面添加代码:
*/
?>
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
<?php
/*
添加订阅feed链接,在header.php页面 <head> 标签中添加:
*/
?>
<link rel="alternate" type="application/rss+xml" title="RSS 2.0 - 所有文章" href="<?php echo get_bloginfo('rss2_url'); ?>" />
<link rel="alternate" type="application/rss+xml" title="RSS 2.0 - 所有评论" href="<?php bloginfo('comments_rss2_url'); ?>" />
<?php
/*
添加wp_head,有些插件需要在网页头部添加一些js或css,要让这些插件能够正常的工作,也让主题有更好的兼容性,应该添加wp_head()函数
header.php 页面 <head> 标签中添加
*/
?>
<?php wp_head(); //用于包含WordPress程序输出头部信息 ?>
<?php
/*
显示菜单栏,这里只在菜单栏中列出分类页和page页面,可以根据喜好来列出想要的。header.php中
*/
?>
<ul id="navigation" class="grid_8">
    <?php wp_list_categories(); //用于列出博客分类页 ?>
    <?php wp_list_pages('depth=1&title_li=0&sort_column=menu_order'); //用于列出博客页面,可不填参数 ?>
</ul>
<?php
//==================================================footer================================================================
/*
footer.php与header.php差不多,写这个文件的目的也是为了精简代码,提高代码的重用性。
在主题目录中创建 footer.php ,在 index.php 或想调用该footer.php页面的页面中使用
*/
get_footer();//功能和get_header()类似
/*
在footer.php页面添加 wp_footer提高兼容性
*/
wp_footer();
/*
wp_footer()和wp_head()差不多,都是用于提高主题兼容性,毕竟有很多插件要在页脚输出一些东西才能正常工作。
*/
//==================================================sidebar================================================================
/*
在主题目录下新建 sidebar.php 页面,在 index.php 或想调用该sidebar.php页面的页面中添加
*/
get_sidebar();
/*
调用 sidebar.php 页面内容
为使WordPress后台 -> 外观 -> 小工具,可以正常地拖动小工具到侧边栏
在 sidebar.php 页面的列表格式应按如下举例格式
*/
?>
<div>
    <?php
    if (! function_exists ( 'dynamic_sidebar' ) || ! dynamic_sidebar ( 'First_sidebar' )) ://First_sidebar为widget名称,要和functions.php中对应的widget name相同
    ?>
    <h4>分类目录</h4>
    <ul>
    <?php wp_list_categories('depth=1&title_li=&orderby=id&show_count=0&hide_empty=1&child_of=0'); ?>
    </ul>
    <?php endif; ?>

    <?php
    if (! function_exists ( 'dynamic_sidebar' ) || ! dynamic_sidebar ( 'Second_sidebar' )) :
    ?>
    <h4>最新文章</h4>
    <ul>
    <?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];
    ?>
    </ul>
    <?php endif; ?>

    <?php
    if (! function_exists ( 'dynamic_sidebar' ) || ! dynamic_sidebar ( 'Third_sidebar' )) :
    ?>
    <h4>标签云</h4>
    <p><?php wp_tag_cloud('smallest=8&largest=22'); ?></p>
    <?php endif; ?>

    <?php
    if (! function_exists ( 'dynamic_sidebar' ) || ! dynamic_sidebar ( 'Fourth_sidebar' )) :
    ?>
    <h4>文章存档</h4>
    <ul>
    <?php wp_get_archives('limit=10'); ?>
    </ul>
    <?php endif; ?>
</div>
<?php
/*
同时在主题目录下创建 functions.php 文件内容为
*/
/** widgets */
if( function_exists('register_sidebar') ) {
    register_sidebar(array(
        'name' => 'First_sidebar', //name就是给widget指定各自的名称,以便在sidebar.php中分别调用.所以只需要给这两个widget取两个名字就好了。
        'before_widget' => '', //定义Widget内容的前后标识符的语句
        'after_widget' => '',
        'before_title' => '<h4>', //定义Widget标题的前后标识符的语句
        'after_title' => '</h4>'
    ));
    register_sidebar(array(
        'name' => 'Second_sidebar',
        'before_widget' => '',
        'after_widget' => '',
        'before_title' => '<h4>',
        'after_title' => '</h4>'
    ));
    register_sidebar(array(
        'name' => 'Third_sidebar',
        'before_widget' => '',
        'after_widget' => '',
        'before_title' => '<h4>',
        'after_title' => '</h4>'
    ));
    register_sidebar(array(
        'name' => 'Fourth_sidebar',
        'before_widget' => '',
        'after_widget' => '',
        'before_title' => '<h4>',
        'after_title' => '</h4>'
    ));
}
/*
这样WordPress后台 -> 外观 -> 小工具,就可以正常地拖动小工具到侧边栏了
制作index.php 文章列表
例子
*/
?>
<div class="grid_8">
    <!-- Blog Post -->
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <div class="post">
        <!-- Post Title -->
        <h3 class="title"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h3>
        <!-- Post Data -->
        <p class="sub"><?php the_tags('标签:', ', ', ''); ?> • <?php the_time('Y年n月j日') ?> • <?php comments_popup_link('0 条评论', '1 条评论', '% 条评论', '', '评论已关闭'); ?><?php edit_post_link('编辑', ' • ', ''); ?></p>
        <div class="hr dotted clearfix"> </div>
        <!-- Post Image -->
        <img class="thumb" alt="" src="<?php bloginfo('template_url'); ?>/images/610x150.gif" />
        <!-- Post Content -->
        <?php //the_excerpt(); ?>
        <?php the_content('阅读全文...'); ?>
        <!-- Read More Button -->
        <p class="clearfix"><a href="<?php the_permalink(); ?>" class="button right">阅读全文</a></p>
    </div>
    <div class="hr clearfix"> </div>
    <?php endwhile; ?>
    <!-- Blog Navigation -->
    <p class="clearfix"><?php previous_posts_link('<< 查看新文章', 0); ?> <span class="float right"><?php next_posts_link('查看旧文章 >>', 0); ?></span></p>
    <?php else : ?>
    <h3 class="title"><a href="#" rel="bookmark">未找到</a></h3>
    <p>没有找到任何文章!</p>
    <?php endif; ?>
</div>
<?php
/*
have_posts();       判断是否有下一个文章
the_post();         改变当前文章指向到下一个文章
the_permalink();    当前指向文章的连接地址
the_title();        当前指向文章的标题
the_tags('标签:');  当前指向文章的标签
comments_popup_link('0 条评论', '1 条评论', '% 条评论', '', '评论已关闭');    显示打印当前指向文章的评论链接
edit_post_link('编辑', ' • ', '');    当前指向文章,显示打印当前指向文章的编辑链接
the_excerpt();                 当前指向文章,只要在写文章的时候在"摘要"框内填写摘要,在首页显示的就是摘要,如果不填就输出全文!
the_content('阅读全文...');    用于输出当前指向文章全文,除非在文章中使用了<!-- more -->
the_permalink();              返回当前指向文章阅读全文的连接地址
previous_posts_link('<< 查看新文章', 0); 显示打印当前显示列表分页连接(每页文章数量取决于在后台设置每页可显示的文章数量)
next_posts_link('查看旧文章 >>', 0);      显示打印当前显示列表分页连接
the_time('Y年n月j日');显示日期如 1999年5月1日
另外,还有个存档页面的模板archive.php,跟index.php的制作过程完全一样,只不过需要在functions.php里添加一个函数
单文章页single.php,可以根据index.php页往这里添加自己想要显示的内容
page.php 也就是页面,博客上的所有网页都是页面,这里指的页面一个单独的页面,如"关于"、"联系方式"等,可以在WordPress后台 ? 页面,进行页面的添加修改等。
可根据之前函数添加本页内容
*/
while (have_posts()) :
    the_post(); update_post_caches($posts);
endwhile;
/*
update_post_caches($posts);  该函数重置文章缓存且未被记录。仅在页面的第一次循环检索到文章子集时,第二次循环可执行基本循环。
常用函数
get_avatar($comment, 48);       获取评论者的gravatar头像,尺寸为48 * 48
comment_reply_link()                 回复留言的链接
get_comment_time('Y-m-d H:i');       获取评论发布时间
edit_comment_link('修改');           管理员修改评论的链接
comment_text()                       输出评论内容
is_user_logged_in()                  判断用户是否登录
wp_login_url( get_permalink() );     博客登录地址
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(get_permalink())       退出登录的链接
*/
/*
创建模板文件
*/

/*
 Template Name: 自建模板
*/
/*
 模板文件中添加如上注释代码,模板文件名任意,在新建页面时模板选择即可显示 自建模板 来使用此模板
可添加想要的模板样式及页面内容,新建页面时只填标题不写内容,相当创建一个页面链接地址,新建页面存在 数据前缀_posts 表中
获取到页面地址后,在写地址时可在后添加参数,则转到该页时可通过$_GET,$_POST接收
可以单独建一个表存储地址,及所属页面类型,及各页面子父级关系,在插件中进行控制

wordpress固定链接
如果修改wordpress固定链接不好用,在apache配置文件 httpd.conf 中打开选项
#LoadModule rewrite_module modules/mod_rewrite.so
把前面 # 去掉,并把所有 AllowOverride None 改成 AllowOverride all
如果不是Apache服务器,而是用的IIS调试的话,那就得去安装一个“ISAPI_Rewrite3_0069_Lite.msi”筛选器,然后在站点设置里面将PHP置为优先级。
创建小工具
在主题目录下新建自定义文件 mytool.php 文件名任意,内容任意
然后在 functions.php 中添加如下代码
*/
register_sidebar_widget ( "我的小工具", "mytool_fun" ); // "我的小工具"为后台显示小工具名称,mytool_fun为引入自建小工具页面内容的方法名
function mytool_fun() {
    include (TEMPLATEPATH . "/mytool.php");
}
/*
在后台小工具中即可看到自定义的小工具,添加后,前台页面即可看到自建小工具页面的内容
*/
?>
PHP 相关文章推荐
php读取xml实例代码
Jan 28 PHP
PHP以指定字段为索引返回数据库所取的数据数组
Jun 30 PHP
php合并js请求的例子
Nov 01 PHP
php中{}大括号是什么意思
Dec 01 PHP
修改apache配置文件去除thinkphp url中的index.php
Jan 17 PHP
PHP5各个版本的新功能和新特性总结
Mar 16 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
PHP中遇到的时区问题解决方法
Jul 23 PHP
PHP单链表的实现代码
Jul 05 PHP
PHP安装BCMath扩展的方法
Feb 13 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 PHP
laravel 解决paginate查询多个字段报错的问题
Oct 22 PHP
php Hex RGB颜色值互换的使用
May 10 #PHP
基于PHP生成静态页的实现方法
May 10 #PHP
深入PHP数据缓存的使用说明
May 10 #PHP
基于PHP常用函数的用法详解
May 10 #PHP
解析php DOMElement 操作xml 文档的实现代码
May 10 #PHP
PHP 自定义错误处理函数的使用详解
May 10 #PHP
PHP 类相关函数的使用详解
May 10 #PHP
You might like
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
php实现微信扫码支付
2017/03/26 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
Vue 使用typescript如何优雅的调用swagger API
2020/09/01 Javascript
python使用urllib2模块获取gravatar头像实例
2013/12/18 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
Python 解析xml文件的示例
2020/09/29 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
销售工作人员的自我评价分享
2013/11/10 职场文书
学生励志演讲稿
2014/01/06 职场文书
《木笛》教学反思
2014/03/01 职场文书
预备党员的自我评价
2014/03/12 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
房屋出租委托书格式
2014/09/23 职场文书
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers