小萌娃 發表於 2023-7-23 00:00:00

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

<div>
<span><u>复制代码</u></span> 代码如下:</div>
<div id="code64260">
<p>
<br>
&lt;?php<br>
/*<br>
在根目录 -&gt; wp-content -&gt; themes 下创建mytheme文件夹用来存放创建新主题模板</p>
<p>
 </p>
<p>
在mytheme目录下创建 index.php ,style.css 两个文件,在wp后台 外观-&gt;主题 中就可以看到刚创建的主题</p>
<p>
打开style.css文件输入<br>
*/<br>
?&gt;<br>
/*<br>
Theme Name: 这里填主题名称<br>
Theme URI: 这里填主题介绍的网址,没有就填你的博客网址吧<br>
Description:这里填主题的简短介绍<br>
Author: 作者名<br>
Author URI: 作者的网址<br>
Version: 版本号<br>
Tags: 标签,多个用半角逗号隔开<br>
*/<br>
&lt;?php<br>
/*<br>
在后台主题管理中即可看到主题相关信息,css中主题信息内容必须用注释符号括起来</p>
<p>
找一个300*225的png图片,命名为 screenshot.png 放在主题目录下(mytheme文件夹中),在主题管理页中即可看到新建主题的预览图片</p>
<p>
//==================================================header================================================================<br>
可以把网站相同头内容放在一个头文件中,在主题目录下新建 header.php 文件向其中输入输入 统一的头部内容<br>
在 index.php 或想调用该header.php页面的页面中 输入<br>
*/</p>
<p>
get_header(); //get_header()就相当于将header.php中的代码拷贝到当前的php文件</p>
<p>
/*<br>
在主题管理页面,该主题实时预览中,默认打开的 index.php 页面中即可引入 header.php 页面的内容<br>
header.php 将会被所有的模板页面(主页、分类页、页面、标签页等)所包含,所以 header.php 中代码应该是动态的。<br>
不同页面的title都是不一样,而且title的设置还会直接影响到SEO的效果,所以这里应该谨慎设置。下面提供一种SEO优化的title写法,<br>
在header.php页面添加<br>
*/<br>
?&gt;<br>
&lt;title&gt;<br>
&lt;?php<br>
if (is_home ()) { // is_home() 当前页面为主页时返回true<br>
    bloginfo ( 'name' ); // 返回站点标题<br>
    echo " - ";<br>
    bloginfo ( 'description' ); // 返回站点副标题,站点描述<br>
} elseif (is_category ()) { // is_category() 当前页面为分类页时返回true<br>
    single_cat_title ();<br>
    echo " - ";<br>
    bloginfo ( 'name' );<br>
} elseif (is_single () || is_page ()) { // is_single() 当前页面为单文章页时返回true 。 is_page() 当前页面为单页面时返回true<br>
    single_post_title ();<br>
} elseif (is_search ()) { // is_search() 当前页面为搜索页时返回true<br>
    echo "搜索结果";<br>
    echo " - ";<br>
    bloginfo ( 'name' );<br>
} elseif (is_404 ()) { // is_404() 当前页面为404页时返回true<br>
    echo '页面未找到!';<br>
} else {<br>
    wp_title ( '', true );<br>
}<br>
?&gt;<br>
&lt;/title&gt;<br>
&lt;?php<br>
/*<br>
 以上添加的php代码运用了条件判断,针对不同的页面采用不同title<br>
在 header.php 页面中添加默认 style.css 文件<br>
*/<br>
?&gt;<br>
&lt;link rel="stylesheet" href="&lt;?php bloginfo('stylesheet_url'); ?&gt;" type="text/css" media="screen" /&gt;<br>
&lt;?php<br>
/*<br>
bloginfo('stylesheet_url');返回的是主题默认style.css文件绝对网址路径,如<br>
http://localhost/wordpress/wp-content/themes/myTheme/style.css<br>
bloginfo('template_url');返回的是主题目录的绝对网址路径,可以用来模板中连接样式图片,如<br>
http://localhost/wordpress/wp-content/themes/mytheme<br>
添加 pingback 通告功能,在header.php页面 &lt;head&gt; 标签中里面添加代码:<br>
*/<br>
?&gt;<br>
&lt;link rel="pingback" href="&lt;?php bloginfo('pingback_url'); ?&gt;" /&gt;<br>
&lt;?php<br>
/*<br>
添加订阅feed链接,在header.php页面 &lt;head&gt; 标签中添加:<br>
*/<br>
?&gt;<br>
&lt;link rel="alternate" type="application/rss+xml" title="RSS 2.0 - 所有文章" href="&lt;?php echo get_bloginfo('rss2_url'); ?&gt;" /&gt;<br>
&lt;link rel="alternate" type="application/rss+xml" title="RSS 2.0 - 所有评论" href="&lt;?php bloginfo('comments_rss2_url'); ?&gt;" /&gt;<br>
&lt;?php<br>
/*<br>
添加wp_head,有些插件需要在网页头部添加一些js或css,要让这些插件能够正常的工作,也让主题有更好的兼容性,应该添加wp_head()函数<br>
header.php 页面 &lt;head&gt; 标签中添加<br>
*/<br>
?&gt;</p>
<p>
&lt;?php wp_head(); //用于包含WordPress程序输出头部信息 ?&gt;</p>
<p>
&lt;?php<br>
/*<br>
显示菜单栏,这里只在菜单栏中列出分类页和page页面,可以根据喜好来列出想要的。header.php中<br>
*/<br>
?&gt;<br>
&lt;ul id="navigation"&gt;<br>
    &lt;?php wp_list_categories(); //用于列出博客分类页 ?&gt;<br>
    &lt;?php wp_list_pages('depth=1&amp;title_li=0&amp;sort_column=menu_order'); //用于列出博客页面,可不填参数 ?&gt;<br>
&lt;/ul&gt;<br>
&lt;?php<br>
//==================================================footer================================================================<br>
/*<br>
footer.php与header.php差不多,写这个文件的目的也是为了精简代码,提高代码的重用性。<br>
在主题目录中创建 footer.php ,在 index.php 或想调用该footer.php页面的页面中使用<br>
*/<br>
get_footer();//功能和get_header()类似<br>
/*<br>
在footer.php页面添加 wp_footer提高兼容性<br>
*/<br>
wp_footer();<br>
/*<br>
wp_footer()和wp_head()差不多,都是用于提高主题兼容性,毕竟有很多插件要在页脚输出一些东西才能正常工作。<br>
*/<br>
//==================================================sidebar================================================================<br>
/*<br>
在主题目录下新建 sidebar.php 页面,在 index.php 或想调用该sidebar.php页面的页面中添加<br>
*/<br>
get_sidebar();<br>
/*<br>
调用 sidebar.php 页面内容<br>
为使WordPress后台 -&gt; 外观 -&gt; 小工具,可以正常地拖动小工具到侧边栏<br>
在 sidebar.php 页面的列表格式应按如下举例格式<br>
*/<br>
?&gt;<br>
&lt;div&gt;<br>
    &lt;?php<br>
    if (! function_exists ( 'dynamic_sidebar' ) || ! dynamic_sidebar ( 'First_sidebar' )) ://First_sidebar为widget名称,要和functions.php中对应的widget name相同<br>
    ?&gt;<br>
    &lt;h4&gt;分类目录&lt;/h4&gt;<br>
    &lt;ul&gt;<br>
    &lt;?php wp_list_categories('depth=1&amp;title_li=&amp;orderby=id&amp;show_count=0&amp;hide_empty=1&amp;child_of=0'); ?&gt;<br>
    &lt;/ul&gt;<br>
    &lt;?php endif; ?&gt;</p>
<p>
<br>
    &lt;?php<br>
    if (! function_exists ( 'dynamic_sidebar' ) || ! dynamic_sidebar ( 'Second_sidebar' )) :<br>
    ?&gt;<br>
    &lt;h4&gt;最新文章&lt;/h4&gt;<br>
    &lt;ul&gt;<br>
    &lt;?php<br>
    $posts = get_posts ( 'numberposts=6&amp;orderby=post_date' );<br>
    foreach ( $posts as $post ) {<br>
        setup_postdata ( $post );<br>
        echo '&lt;li&gt;&lt;a href="' . get_permalink () . '"&gt;' . get_the_title () . '&lt;/a&gt;&lt;/li&gt;';<br>
    }<br>
    $post = $posts ;<br>
    ?&gt;<br>
    &lt;/ul&gt;<br>
    &lt;?php endif; ?&gt;</p>
<p>
<br>
    &lt;?php<br>
    if (! function_exists ( 'dynamic_sidebar' ) || ! dynamic_sidebar ( 'Third_sidebar' )) :<br>
    ?&gt;<br>
    &lt;h4&gt;标签云&lt;/h4&gt;<br>
    &lt;p&gt;&lt;?php wp_tag_cloud('smallest=8&amp;largest=22'); ?&gt;&lt;/p&gt;<br>
    &lt;?php endif; ?&gt;</p>
<p>
<br>
    &lt;?php<br>
    if (! function_exists ( 'dynamic_sidebar' ) || ! dynamic_sidebar ( 'Fourth_sidebar' )) :<br>
    ?&gt;<br>
    &lt;h4&gt;文章存档&lt;/h4&gt;<br>
    &lt;ul&gt;<br>
    &lt;?php wp_get_archives('limit=10'); ?&gt;<br>
    &lt;/ul&gt;<br>
    &lt;?php endif; ?&gt;<br>
&lt;/div&gt;<br>
&lt;?php<br>
/*<br>
同时在主题目录下创建 functions.php 文件内容为<br>
*/<br>
/** widgets */<br>
if( function_exists('register_sidebar') ) {<br>
    register_sidebar(array(<br>
        'name' =&gt; 'First_sidebar', //name就是给widget指定各自的名称,以便在sidebar.php中分别调用.所以只需要给这两个widget取两个名字就好了。<br>
        'before_widget' =&gt; '', //定义Widget内容的前后标识符的语句<br>
        'after_widget' =&gt; '',<br>
        'before_title' =&gt; '&lt;h4&gt;', //定义Widget标题的前后标识符的语句<br>
        'after_title' =&gt; '&lt;/h4&gt;'<br>
    ));<br>
    register_sidebar(array(<br>
        'name' =&gt; 'Second_sidebar',<br>
        'before_widget' =&gt; '',<br>
        'after_widget' =&gt; '',<br>
        'before_title' =&gt; '&lt;h4&gt;',<br>
        'after_title' =&gt; '&lt;/h4&gt;'<br>
    ));<br>
    register_sidebar(array(<br>
        'name' =&gt; 'Third_sidebar',<br>
        'before_widget' =&gt; '',<br>
        'after_widget' =&gt; '',<br>
        'before_title' =&gt; '&lt;h4&gt;',<br>
        'after_title' =&gt; '&lt;/h4&gt;'<br>
    ));<br>
    register_sidebar(array(<br>
        'name' =&gt; 'Fourth_sidebar',<br>
        'before_widget' =&gt; '',<br>
        'after_widget' =&gt; '',<br>
        'before_title' =&gt; '&lt;h4&gt;',<br>
        'after_title' =&gt; '&lt;/h4&gt;'<br>
    ));<br>
}<br>
/*<br>
这样WordPress后台 -&gt; 外观 -&gt; 小工具,就可以正常地拖动小工具到侧边栏了</p>
<p>
制作index.php 文章列表<br>
例子<br>
*/<br>
?&gt;<br>
&lt;div&gt;<br>
    &lt;!-- Blog Post --&gt;<br>
    &lt;?php if (have_posts()) : while (have_posts()) : the_post(); ?&gt;<br>
    &lt;div&gt;<br>
        &lt;!-- Post Title --&gt;<br>
        &lt;h3&gt;&lt;a href="&lt;?php the_permalink(); ?&gt;" rel="bookmark"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h3&gt;<br>
        &lt;!-- Post Data --&gt;<br>
        &lt;p&gt;&lt;?php the_tags('标签:', ', ', ''); ?&gt; • &lt;?php the_time('Y年n月j日') ?&gt; • &lt;?php comments_popup_link('0 条评论', '1 条评论', '% 条评论', '', '评论已关闭'); ?&gt;&lt;?php edit_post_link('编辑', ' • ', ''); ?&gt;&lt;/p&gt;<br>
        &lt;div&gt; &lt;/div&gt;<br>
        &lt;!-- Post Image --&gt;<br>
        &lt;img alt="" src="&lt;?php bloginfo('template_url'); ?&gt;/images/610x150.gif" /&gt;<br>
        &lt;!-- Post Content --&gt;<br>
        &lt;?php //the_excerpt(); ?&gt;<br>
        &lt;?php the_content('阅读全文...'); ?&gt;<br>
        &lt;!-- Read More Button --&gt;<br>
        &lt;p&gt;&lt;a href="&lt;?php the_permalink(); ?&gt;"&gt;阅读全文&lt;/a&gt;&lt;/p&gt;<br>
    &lt;/div&gt;<br>
    &lt;div&gt; &lt;/div&gt;<br>
    &lt;?php endwhile; ?&gt;<br><br>
    &lt;!-- Blog Navigation --&gt;<br>
    &lt;p&gt;&lt;?php previous_posts_link('&lt;&lt; 查看新文章', 0); ?&gt; &lt;span&gt;&lt;?php next_posts_link('查看旧文章 &gt;&gt;', 0); ?&gt;&lt;/span&gt;&lt;/p&gt;<br>
    &lt;?php else : ?&gt;<br>
    &lt;h3&gt;&lt;a href="#" rel="bookmark"&gt;未找到&lt;/a&gt;&lt;/h3&gt;<br>
    &lt;p&gt;没有找到任何文章!&lt;/p&gt;<br>
    &lt;?php endif; ?&gt;<br>
&lt;/div&gt;<br>
&lt;?php<br>
/*<br>
have_posts();       判断是否有下一个文章<br>
the_post();         改变当前文章指向到下一个文章</p>
<p>
the_permalink();    当前指向文章的连接地址<br>
the_title();        当前指向文章的标题<br>
the_tags('标签:');  当前指向文章的标签<br>
comments_popup_link('0 条评论', '1 条评论', '% 条评论', '', '评论已关闭');    显示打印当前指向文章的评论链接<br>
edit_post_link('编辑', ' • ', '');    当前指向文章,显示打印当前指向文章的编辑链接<br>
the_excerpt();                 当前指向文章,只要在写文章的时候在"摘要"框内填写摘要,在首页显示的就是摘要,如果不填就输出全文!<br>
the_content('阅读全文...');    用于输出当前指向文章全文,除非在文章中使用了&lt;!-- more --&gt;<br>
the_permalink();              返回当前指向文章阅读全文的连接地址<br>
previous_posts_link('&lt;&lt; 查看新文章', 0); 显示打印当前显示列表分页连接(每页文章数量取决于在后台设置每页可显示的文章数量)<br>
next_posts_link('查看旧文章 &gt;&gt;', 0);      显示打印当前显示列表分页连接<br>
the_time('Y年n月j日');显示日期如 1999年5月1日</p>
<p>
另外,还有个存档页面的模板archive.php,跟index.php的制作过程完全一样,只不过需要在functions.php里添加一个函数</p>
<p>
单文章页single.php,可以根据index.php页往这里添加自己想要显示的内容</p>
<p>
page.php 也就是页面,博客上的所有网页都是页面,这里指的页面一个单独的页面,如"关于"、"联系方式"等,可以在WordPress后台 – 页面,进行页面的添加修改等。<br>
可根据之前函数添加本页内容<br>
*/<br>
while (have_posts()) :<br>
    the_post(); update_post_caches($posts);<br>
endwhile;<br>
/*<br>
update_post_caches($posts);  该函数重置文章缓存且未被记录。仅在页面的第一次循环检索到文章子集时,第二次循环可执行基本循环。</p>
<p>
常用函数<br>
get_avatar($comment, 48);       获取评论者的gravatar头像,尺寸为48 * 48<br>
comment_reply_link()                 回复留言的链接<br>
get_comment_time('Y-m-d H:i');       获取评论发布时间<br>
edit_comment_link('修改');           管理员修改评论的链接<br>
comment_text()                       输出评论内容</p>
<p>
is_user_logged_in()                  判断用户是否登录<br>
wp_login_url( get_permalink() );     博客登录地址<br>
get_comment_author_link()            用于获取评论者博客地址<br>
$comment_author                      读取cookie,如果该用户之前已经发表过评论则自动帮助用户填写用户名<br>
$comment_author_email                读取cookie,如果该用户之前已经发表过评论则自动帮助用户填写Email<br>
$comment_author_url                  读取cookie,如果该用户之前已经发表过评论则自动帮助用户填写博客地址<br>
do_action(‘comment_form', $post-&gt;ID) 该函数为某些插件预留<br>
wp_logout_url(get_permalink())       退出登录的链接<br>
*/</p>
<p>
/*<br>
创建模板文件<br>
*/</p>
<p>
<br>
/*<br>
 Template Name: 自建模板<br>
*/</p>
<p>
/*<br>
 模板文件中添加如上注释代码,模板文件名任意,在新建页面时模板选择即可显示 自建模板 来使用此模板<br>
可添加想要的模板样式及页面内容,新建页面时只填标题不写内容,相当创建一个页面链接地址,新建页面存在 数据前缀_posts 表中<br>
获取到页面地址后,在写地址时可在后添加参数,则转到该页时可通过$_GET,$_POST接收<br>
可以单独建一个表存储地址,及所属页面类型,及各页面子父级关系,在插件中进行控制</p>
<p>
<br>
wordpress固定链接<br>
如果修改wordpress固定链接不好用,在apache配置文件 httpd.conf 中打开选项<br>
#LoadModule rewrite_module modules/mod_rewrite.so<br>
把前面 # 去掉,并把所有 AllowOverride None 改成 AllowOverride all<br>
如果不是Apache服务器,而是用的IIS调试的话,那就得去安装一个“ISAPI_Rewrite3_0069_Lite.msi”筛选器,然后在站点设置里面将PHP置为优先级。</p>
<p>
创建小工具<br>
在主题目录下新建自定义文件 mytool.php 文件名任意,内容任意<br>
然后在 functions.php 中添加如下代码<br>
*/<br>
register_sidebar_widget ( "我的小工具", "mytool_fun" ); // "我的小工具"为后台显示小工具名称,mytool_fun为引入自建小工具页面内容的方法名<br>
function mytool_fun() {<br>
    include (TEMPLATEPATH . "/mytool.php");<br>
}<br>
/*<br>
在后台小工具中即可看到自定义的小工具,添加后,前台页面即可看到自建小工具页面的内容<br>
*/<br>
?&gt;</p>
</div>
<p>
 </p>
頁: [1]
查看完整版本: 基于wordpress主题制作的具体实现步骤