WORD PRESS W ordP ress 高级教程 (晋级版) 编著:夜阑小雨 网站: www.coagenpl.cn 2009 年 8 月 26 日 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 2 页/共 60 页------------------------------------------------- 目 录 精通 WORDPRESS 主题制作技巧 ..................................................................................................6 :................................................................................................6 : 显示博客的信息 (参数同 get_bloginfo) .......................6 :列表显示页面链接 .............................................................6 :特定内容页(Post)自动生成的 ID(无参数) ...................................6 :得到内容页(Post) URL(无参数) ........................................6 :显示或返回内容页(Post)标题 ......................................................6 :日志发表的日期 格式:月日年 ...................................7 :显示日志的作者(无参数) ..........................................................7 :日志的内容 ...............................7 '); ?>:日志的 tag 标签....................................................7 :当用户已登录并具有权限时,所显示的日志编辑链接 ...................................................................................................................................................7 :日志的评论情况 ................................................................................................7 :较早日志页面的链接 ..............................7 :较新日志页面的链 ..........................7 :按月显示内容存档 .............................................7 :显示 tag 标签.............................................................................8 :得到日志的信息 ...............................................................................8 :按照字符顺 序显示分类列表 ...................................................................................................................... 10 :显示友情链接 ................................................................................................................................................. 10 :显示深度到 3 的页 面链接..................................................................................................................................... 10 :调用 searchform 的文件生成搜索栏 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 3 页/共 60 页------------------------------------------------- ................................................................................................................................................. 10 :调用 WordPress 自带的日历...................................................... 10 WORDPRESS 基本模板文件......................................................................................................... 10 一套完整的 WordPress 模板应至少具有如下文件: ............................................................. 10 基本条件判断 Tag................................................................................................................... 11 Header 部分常用到的 PHP 函数............................................................................................. 11 模板常用的 PHP 函数及命令 ................................................................................................. 12 与模板相关的其他函数........................................................................................................... 12 WORDPRESS 函数技巧 ................................................................................................................ 13 Loop 循环(成功)................................................................................................................. 13 在 WordPress 的第一篇文章中插入 Google 广告(成功)..................................................... 13 改变每个分类页面的日志显示数. (成功).......................................................................... 14 给特定分类添加不同模板(成功)........................................................................................ 14 为特定分类文章创建不同外观 ............................................................................................... 14 样式化不同分类...................................................................................................................... 15 在某一个页面单独调用某一个 php 文件; ............................................................................ 15 动态标题以实现更友好的 SEO............................................................................................... 15 动态显示菜单:根据分类及页面类型显示相应条目: ......................................................... 15 动态显示高亮显菜单:........................................................................................................... 16 自定义顶部导航...................................................................................................................... 16 查询文章 ................................................................................................................................. 17 Query_posts(查询文章?)能被用来显示特定文章,你所需做只是你一个模板文件的 Loop 开始之前调用函数 .................................................................................................................. 17 query_posts() 函数的一些常见用法........................................................................................ 17 获取文章 ................................................................................................................................. 17 如何按分类和按月显示一个 Archvies 存档页面..................................................................... 18 页面模板头部声明 .................................................................................................................. 18 为不同的分类指定不同的图像 ............................................................................................... 18 如何添加幻灯片 BANNER 广告 .................................................................................................... 19 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 4 页/共 60 页------------------------------------------------- 5 个你不知道的 WORDPRESS 函数 ............................................................................................. 22 WORDPRESS 一些常用代码:..................................................................................................... 23 显示最新文章 .......................................................................................................................... 23 显示最新评论 .......................................................................................................................... 23 显示热评文章 .......................................................................................................................... 24 调用Gravatar(只适应2.5 以上) ........................................................................................... 24 调用前两篇日志,后续3篇日志列表 .................................................................................... 24 随机文章 ................................................................................................................................. 24 安全的调用Wordpress 插件模板代码 .................................................................................... 25 WORDPRESS 常用代码解释........................................................................................................ 25 1. 最新文章 ............................................................................................................................ 25 2. 随机文章 ............................................................................................................................ 25 3. 最新留言 ............................................................................................................................ 26 调用 TAB 页签菜单:.................................................................................................................... 27 添加head 头文件:判断后调用js 文件 ............................................................................... 27 添加css 代码到 样式文件内 ................................................................................................ 27 添加tab 代码到需要调用的地方 ............................................................................................ 28 保存js 代码到目录下 ............................................................................................................. 31 所有页面的归档:.......................................................................................................................... 32 WORDPRESS 主题中常用代码总结:.......................................................................................... 34 WORDPRESS 简单企业模板,企业网站完成................................................................................. 37 WORDPRESS 搭建企业网站......................................................................................................... 40 一.WordPress 搭建中小企业网站思路 ............................................................................................. 40 二.注意事项 ..................................................................................................................................... 46 创建漂亮的 WORDPRESS 日期按钮........................................................................................... 47 第一步:输入代码 ...................................................................................................................... 47 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 5 页/共 60 页------------------------------------------------- 第二步:建立背景图片 ............................................................................................................... 48 第三步:为其创建样式 ............................................................................................................... 48 创建动态的置顶文章 ...................................................................................................................... 48 查询 WORDPRESS 博客资料的 SQL 命令................................................................................... 50 给 WP 添加 CTRL+ENTER 回复快捷键 ...................................................................................... 51 WORDPRESS 的 10 个杀手级 HACK 技巧.................................................................................. 52 1.只在搜索引擎结果中显示 AdSense 广告.......................................................................... 52 2.避免在多循环中出现重复文章 ............................................................................................ 53 3.用页码代替 “上页”和“下页”.................................................................................................. 54 4.自动获取文章图像 ............................................................................................................... 55 5.创建“发送到 Twitter”按钮.................................................................................................... 55 6. 使用直引号,避免弯引号 .................................................................................................. 56 7. 如无 Referrer 请求则禁止发表评论 .................................................................................. 56 8.在 WordPess 导航条中使用 CSS 滑动门 .......................................................................... 57 9. WordPress 博客百变头图 .................................................................................................. 58 10.显示撰写计划 ..................................................................................................................... 58 侧边加入登陆界面: ...................................................................................................................... 59 获取单篇文章内的关键字及描述方法: ........................................................................................ 60 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 6 页/共 60 页------------------------------------------------- 精通 WordPress 主题制作技巧 : 将由 WordPress 函数自动生成的信息传回博客, 然后再在其他地方使用你的 PHP 代码 部分常用参数: default:默认 name:名称 description:说明 url、home、siteurl:网址 charset:网页的编码方式 stylesheet_url:css 文件地址 version:博客所使用的 WordPress 的的版本 : 显示博客的信息 (参数同 get_bloginfo) :列表显示页面链接 部分常用参数: post_title:按标题字母顺序排列(默认) post_date:按创建时间排序 post_modified:按最后修改时间排序 ID:按照 id 排序 post_author:按照作者 id 排序 :特定内容页(Post)自动生成的 ID(无参数) :得到内容页(Post) URL(无参数) :显示或返回内容页(Post)标题 用法: before:(字符串)标题前面的文字,默认情况下不显示, after:(字符串)标题前面的文字,默认情况下不显示 display:(布尔)当布尔值为真时,显示标题(默认),当布尔值为假时,得 到标题的值但不显示 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 7 页/共 60 页------------------------------------------------- :日志发表的日期 格式:月日年 :显示日志的作者(无参数) :日志的内容 用法: more_link_text:(字符串),当日志有 more 标记时,链接到日志页面 strip_teaser:(布尔),日志 “更多”链接的隐藏( true)或显示(false)(默认) '); ?>:日志的 tag 标签 用法 : before:(字符串)用在标签的前面,默认为 “tags:” separator:(字符串)分隔符,默认情况下不显示 after:(字符串)用在标签的后面,默认情况下不显示 :当用户已登录并具有权限时,所显示的日志编辑 链接 :日志的评论情况 :较早日志页面的链接 :较新日志页面的链 :按月显示内容存档 用法: )标签(默认) option:添加选择(
4) 在需要引用的地方添加以下代码:( 不知道什么原因调用 huandeng.php 代码后,此区 域将脱离文件流,而且没有办法让它归位,只能将其直接写入 index.php 文件内部) 这里面有一个 5) 自定义 gallery 的具体显示效果。 打开文件 wp-content/themes/your_theme_name/css/jd.gallery.css,在这里修改 gallery 的 宽和高。(通过修改 jd.gallery.css 完全对这个 slideshow 根据自己的主题进行个性化。 ^_^) #myGallery, #myGallerySet, #flickrGallery { width: 590px; height: 250px; z-index:5; border: 1px solid #000; } 默认的字号对于中文太小了,可以调整 slideshow 下方信息栏的高度及文字的字号,只需要 修改 .jdGallery .slideInfoZone(滑动信息栏高度、颜色等参数) .jdGallery .slideInfoZone h2(信息栏内标题样式) W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 22 页/共 60 页------------------------------------------------- .jdGallery .slideInfoZone p(信息栏文本样式) *上滑动栏宽度 ; .jdGallery .carousel { position: absolute; width: 100%; margin: 0px; left: 0; top: 0; height: 90px;/*上滑动栏宽度;*/ background: #333; color: #fff; text-indent: 0; overflow: hidden; } 你还可以修改 wp-content/themes/your_theme_name/scripts/jd.gallery.js 来改变 gallery 的 展示效果(Smooth Gallery 提供了多种不同的显示效果,你可以根据需要进行修改) 5 个你不知道的 Wordpress 函数 1. wp_mail()基本上是一个超级简单的函数,允许你通过一些简单的代码轻松 地向任何人发送电子邮件。例如: 2. wp_loginout():主题中显示“登录”链接 3. clean_url():入 URL 并测试它的结构是否正确。如果链接前面缺少http:// 它可以自动添加,转换符号为正确的HTML, 4. wpautop() :这个函数用来转换换行符字符串为标记,并把双换行符 作为一个新的段落的开始,在前一段加入,并在新的段落加上
。 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 23 页/共 60 页------------------------------------------------- wordpress 一些常用代码: 显示最新文章 l
l 显示最新评论 l
显示热评文章 l 最新评论
l l comments l LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = l $wpdb->posts.ID) l WHERE comment_approved = '1' AND comment_type = '' AND l post_password = '' l ORDER BY comment_date_gmt DESC l LIMIT 10"; l $comments = $wpdb->get_results($sql); l $output = $pre_HTML; l $output .= "\n
l - "; l foreach ($comments as $comment) { $output .= "\n
- ".strip_tags($comment->comment_author) .":" . "ID). "#comment-" . $comment->comment_ID . "\" title=\"on " . $comment->post_title . "\">" .strip_tags($comment->com_excerpt) ." "; } l $output .= "\n
l l l
调用Gravatar(只适应2.5 以上) 调用前两篇日志,后续3 篇日志列表 l l l Posted on in l l (Google ads here) l l l l Posted on in l 随机文章 l 安全的调用Wordpress 插件模板代码 最受关注文章
l get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 10"); l foreach ($result as $topten) { l $postid = $topten->ID; l $title = $topten->post_title; l $commentcount = $topten->comment_count; l if ($commentcount != 0) { ?> l部件标题
Wordpress 常用代码解释 1. 最新文章 Wordpress 最新文章的调用可以使用一行很简单的模板标签wp_get_archvies 来 实现. 代码如下: (显示10 篇最新更新文章) 或 后面这个代码显示你博客中最新的20 篇文章,其中format=custom 这里主要用 来自定义这份文章列表的显示样式。具体的参数和使用方法你可以参考官方的使 用说明- wp_get_archvies。(fromat=custom 也可以不要,默认以UL 列表显示 文章标题。) 补充: 通过WP 的 query_posts()函数也能调用最新文章列表, 虽然代码会比较 多一点,但可以更好的控制Loop 的显示,比如你可以设置是否显示摘要。具体 的使用方法也可以查看官方的说明。 2. 随机文章最新关注日志及评论
W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 29 页/共 60 页------------------------------------------------- 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 10"; $comments = $wpdb->get_results($sql); $output = $pre_HTML; foreach ($comments as $comment) { $output .= "\n".strip_tags($comment->comment_author).":" . "ID). "#comment-" . $comment->comment_ID . "\" title=\"on " . $comment->post_title . "\">" . strip_tags($comment->com_excerpt)." "; } $output .= $post_HTML; echo $output;?>
W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 31 页/共 60 页-------------------------------------------------
','
'); $thismonth = zeroise($arcresult->month,2); $thisyear = $arcresult->year; $arcresults2 = $wpdb->get_results("SELECT ID, post_date, post_title, comment_status FROM " . $wpdb->posts . " WHERE post_date LIKE '$thisyear-$thismonth-%' AND post_status='publish' AND post_type='post' AND post_password='' ORDER BY post_date DESC"); if ($arcresults2) { echo "- \n"; foreach ($arcresults2 as $arcresult2) { if ($arcresult2->post_date != '0000-00-00 00:00:00') { $url = get_permalink($arcresult2->ID); $arc_title = $arcresult2->post_title; if ($arc_title) $text = strip_tags($arc_title); else $text = $arcresult2->ID; echo "
- ".get_archives_link($url, $text, ''); $comments = mysql_query("SELECT * FROM " . $wpdb->comments . " WHERE comment_approved='1' and comment_post_ID=" . $arcresult2->ID); $comments_count = mysql_num_rows($comments); if ($arcresult2->comment_status == "open" OR $comments_count > 0) echo ' ('.$comments_count.')'; echo " \n"; } } echo "
- ID); if ($tags) { $first_tag = $tags[0]->term_id; $args=array( 'tag__in' => array($first_tag), 'post__not_in' => array($post->ID), 'showposts'=>10, 'caller_get_posts'=>1 ); $my_query = new WP_Query($args); if( $my_query->have_posts() ) { while ($my_query->have_posts()) : $my_query->the_post(); ?>
- W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 35 页/共 60 页------------------------------------------------- 3. Wordpress 主题使用PHP 代码输出最新文章 4. 最新评论: comments LEFT OUTER JOIN $wpdb->posts ON($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHEREcomment_approved = '1' AND comment_type = " AND post_password = " ORDERBY comment_date_gmt DESC LIMIT 10"; $comments = $wpdb->get_results($sql); $output = $pre_HTML; foreach ($comments as $comment) { $output.= "\n
- ". "ID)."#comment-" . $comment->comment_ID ."\" title=\"on ".$comment->post_title ."\">".strip_tags($comment->comment_author)."" . ": ".strip_tags($comment->com_excerpt)." "; } $output .= $post_HTML; echo $output; ?> is_archive = true; $wp_query->is_home = false; ?> ID)) : ?> W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 36 页/共 60 页------------------------------------------------- 5. wordpress 主题–相关文章代码 基本 sql 是这样: $sql = “SELECT p.ID, p.post_title, p.post_date, p.comment_count, count(t_r.object_id) as cnt FROM $wpdb->term_taxonomy t_t, $wpdb->term_relationships t_r, $wpdb->posts p WHERE t_t.taxonomy =’post_tag’ AND t_t.term_taxonomy_id = t_r.term_taxonomy_id AND t_r.object_id = p.ID AND (t_t.term_id IN ($taglist)) AND p.ID != $post->ID AND p.post_status = ‘publish’ GROUP BY t_r.object_id ORDER BY cnt DESC, p.post_date_gmt DESC LIMIT $limit;”; 一点一点的解释: term_taxonomy 、term_relationship、posts 这三张表存的什么我不多说, 网上一般都可以查到,维基百科貌似都有。把他们连起来,做个 sql,注意 group by 以及 limit,这样就可以提取结果了 $related_post = $wpdb->get_results($sql); 之前要把$taglist 做好,利用 wp_get_post_tags($post->ID);可以将该篇文章的的 tag 取到 一个数组中,然后再链接就可以了 最后怎么处理输出就看个人爱好了,这个功能我写的大概也就十几行,我比较喜欢简短的说, 呵呵。 function related_post($limit = 10) { global $wpdb, $post; $tags = wp_get_post_tags($post->ID); $taglist = "'" . $tags[0]->term_id. “‘”; $tagcount = count($tags); if ($tagcount > 1) { for ($i = 1; $i < $tagcount; $i++) { $taglist .= “, ‘”.$tags[$i]->term_id.”‘”; } } $sql = “SELECT p.ID, p.post_title, p.post_date, p.comment_count, count(t_r.object_id) as cnt FROM $wpdb->term_taxonomy t_t, $wpdb->term_relationships t_r, $wpdb->posts p WHERE t_t.taxonomy =’post_tag’ AND t_t.term_taxonomy_id = t_r.term_taxonomy_id AND t_r.object_id = p.ID AND (t_t.term_id IN ($taglist)) AND p.ID != $post->ID AND p.post_status = ‘publish’ GROUP BY t_r.object_id ORDER BY cnt DESC, p.post_date_gmt DESC LIMIT $limit;”; $related_post = $wpdb->get_results($sql); $output = “”; foreach ($related_post as $tmp){ $output .= 这个就看个人爱好了 } if($output == “”)$output = “No Related Post Yet”; echo $output; } W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 37 页/共 60 页------------------------------------------------- WordPress 简单企业模板,企业网站完成 先在 WordPress 生成一分类,叫[基本资料], 然后分别写[公司简介]和[联系方 式]等,再增加分类[新闻中心] . 首页模板里调用 query_posts(’p=1′) , 完成公司简介, 1 是公司简介这文章 ID index.php 代码:
- /about/company/” title=”关于公司 ”>关于公司
- /about/contact/” title=”联系我们 ”>联系我们
- /about/partner/” title=”合作伙伴 ”>合作伙伴 wp_list_cats(’child_of= 5 ‘); } 现在 side 里“文章+子分类”的列表,我们很好的解决了。由此启发,当我们在点击各大分类 下 side 列表不一定都用分类,因为如果是分类的话,右边调用的是 category .php, 显示 分类页。如果每个大分类下都是这样显示分类列表的话,看起来还是很像 blog,不像企业 网站。所以我们的网站构架要改一下了,如图: 正如图中所示有两种方法实现:一是写一篇该子分类概述的文章,文章里有其他该子分类的 链接,把概述文章的链接用刚才所述的方法写在 sidebar.php 里;另外一种是写一个子分类 概述 page 页面把链接写在 sidebar 里。这里我们采取第一种方法。因为用 page 的话会导 致页面过多不好管理,而且 page 的 url 地址为: http://域名/页面缩略名 / 的结构,这样就 不好识别是哪个分类的内容了。改完的代码如下:
- /products/products-all/production/” title=”产品 概括”>产品概括
- /products/features/functions-and-features/” titl e=”功能特点 ”>功能特点
- /products/strength/strength/” title=”核心优势 ”> 核心优势
- /products/application/report-appdeployment/” title=”部署与运用开发 ”>部署与运用开发 } elseif (in_category(’4′)|in_category(’1 1 ‘)|in_category(’1 2 ‘)|in_category(’ 13 ‘)|in_category(’ 14 ‘)) { wp_list_cats(’child_of=4′);} / * 该分类是 “技术中心”,需要它为子分类,就直接调 用其子分类 */ ?> elseif ( in_category(’5′)|in_category(’ 15 ‘)|in_category(’1 6 ‘)) { ?>
- /about/company/” title=”关于公司”>关于公司
- /about/contact/” title=”联系我们”>联系我们 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 44 页/共 60 页-------------------------------------------------
- /about/partner/” title=”合作伙伴 ”>合作伙伴
- /about /news/” title=”企业新闻 ”>企业新闻
- /about /cases/” title=”成功案例 ”>成功案例 } elseif ( in_category(’6′)) { ?>
- /about/download/” title=”下载试用”>下载试用
- /about/purchase/” title=”购买产品”>购买产品 }
- 和标签之间已加入了 标签。 9. WordPress 博客百变头图 问题:确切地说这并不是什么问题,但有不少 WordPress 用户希望自己的博客头图能够丰富多变。 解决方案: 1. 当你相中了一些头图图片后,将它们命名为 1.jpg, 2.jpg, 3.jpg,诸如此类。当然,你可以使 用任意多的图片。 2. 将图片上传到 wp-content/themes/yourtheme/images 目录下。 3. 打开 header.php 文件,并将如下代码粘入: $num = rand(1,10); //Get a random number between 1 and 10, assuming 10 is the total number of header images you have <div id="header" style="background:transparent url(images/.jpg) no-repeat top left;"> 4. 完成!现在博客各页面或日 志页面将会显示随机的头图了。 代码说明:这里没什么好说的。我们直接使用 PHP rand()函数初始化一个 $num 变量来随机获取 1 到 10 之间的数字。接着我们将 $num 变量的结果连上当前外观主题的路径就 OK 了。 10.显示撰写计划 问题:许多博主都希望自己拥有更多的读者,有更多的 RSS feed。而把文章撰写计划罗列出来显然 能提高访客的好奇心和兴趣。 解决方案:打开任意一个主题文件并粘贴进以下代码: have_posts()){ while($my_query->have_posts()):$my_query->the_post();?> W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 59 页/共 60 页------------------------------------------------- 代码说明:在这个代码改进中,我们使用 WP_Query 类创建了自定义语句以发送数据库查询并提取 最近将要撰写的五篇文章。完成后,系统就会使用一个简洁的 WordPress 循环来显示文章标题。 侧边加入登陆界面:
控制面板
登录
W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 60 页/共 60 页------------------------------------------------- 获取单篇文章内的关键字及描述方法: ID); foreach ($tags as $tag ) { $keywords = $keywords . $tag->name . ","; } if (have_posts()) : while (have_posts()) : the_post(); if(strlen($text) > 150) { $text = substr($text,0,150); $text= mb_convert_encoding($text,"UTF-8"); $text=preg_replace("/(\s+)/","",$text); } } if ($post->post_excerpt){ $text = mb_substr(strip_tags($post->post_excerpt),0,150); } else { $text = mb_substr(strip_tags($post->post_content),0,150); }?> 列出页面: 代码说明:此例中,我们在 wp_list_pages()和 wp_list_categories()函数中使用了 echo=0 参量,它 允许你获取函数结果而无需将其直接打印在屏幕上。接着函数结果将用于 PHP preg_replace()函数, 并最终显示出来,此时
”> W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 38 页/共 60 页-------------------------------------------------
********************
”; // echo $ss; // echo “
*********************
”; ?>
- W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 43 页/共 60 页------------------------------------------------- post; if (in_category(’ 3 ‘)|in_category(’7′)|in_category(’ 8 ‘) |in_category(’ 9 ‘)|in_category(’ 10 ‘)) { ?>
产品介绍技术中心关于我们 试用购买
至此,sidebar 里的 title 名称也写完了。 sidebar 里的子分类(文章)模块内容也全都完成, 如若需要可在下面再写点热点链接之类的内容。 最后,single.php、category.php、 archive.php (企业网站它的用处不大 )、index.php 等 都可以调用该 sidebar.php 了。 3) 菜单调用大分类 Sidebar 做好了,下面就让菜单上显示调用的大分类,调用 这句函数即可。 include=ID:是我们调用的大类, 多个大类的 ID 号用英文 “,”隔开。 4) 修改 category.php 现在菜单上列出的是大分类调用,这样每个大分类下面就都会显示分类列表,但如果现在有 的大分类不想显示分类列表,而显示该分类的第一篇文章,就需要来修改 category.php 文 件了。思路和修改 sidebar 差不多。最初 category.php 的结构应该如下: /*这里是调用分类的内容 */
现在因为需要点击大分类 3、5、6 时,页面上展示的是文章而非分类列表,所以在 里添加一个 if 语句: W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 46 页/共 60 页------------------------------------------------- 把以前的 /*这里是调用分类的内容 */ 的 中。 而需要在结构中添加的是大分类 3、5、6 中 这一块的内容,代码如下 query_posts ()是获取文章,其内参数可用 ’ p=文章 ID ’ 或 ’ name=文章缩略名 ’ 来调 用想放在大分类下首页的文章; 里是文章名称; the_content(); 是调用文章内容。 这样就可以在菜单中列出的大分类上点击,出来想要的文章或分类列表了。 以上几点就是企业级网站全站用 WordPress 搭建的大致思路。 二.注意事项 1、 这样的主题模板要基于 WordPress 的数据库,因为在写 side 时用到了分类的 id 号。 2、 正是因为第一条,这样的 WordPress 主题模板没有通用的,只能因企业而异。 3、 永久链接最好用 /%category%/%postname%/ (分类+文章缩略名)的形式,这样 url 地址会看起来更有结构性,看起来也更像企业或产品网站。 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 47 页/共 60 页------------------------------------------------- 创建漂亮的 Wordpress 日期按钮 我不知道我的那些日期按钮怎么样,但似乎你们都很喜欢。是的,今天,我们将 来学习如何为WordPress 创建一个漂亮的日期按钮。总共有三步简单的步骤: 第一步:输入代码 (请不要复制粘贴,输入到模板中) – 我正在建立一个盒模型或者一个被命名 为”post-date”的DIV(层标签)。当然我也可以将它命名为 “little-potato.”。
– 没有任何内容可以添加到我的日期按钮中了,所以这里我也结束(关 闭)了 post-date 盒模型(或者称DIV 标签),因为我必须按顺序关闭所有打开 的标签。 (更多关于date 的显示选项,请访问 php.net) 第二步:建立背景图片 你需要某些设计类软件用来设计你的日期按钮的背景图片,如Photoshop,下图 是我的日期按钮背景图片: 第三步:为其创建样式 这一步需要你了解一点CSS 的知识,样式决定于个人的偏好,因为你的背景图案 会与我的不同。但,下面是些基本的内容: .post-date{ float: left; display: inline; margin: 0 10px 0 0; background: url(images/date_button_template.gif) no-repeat; } 图片的名称应该命名为 date_button_template.gif。images/是存放图片的文件 夹。如果你存储你的图片在其他文件夹,更改images/为你的图片文件夹。 创建动态的置顶文章 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 49 页/共 60 页------------------------------------------------- 我们的博客,MaxPower,需要某些文章比其他文章保持在最上面更长的时间。我 们发现我们撰写的稿件像慢慢陷入沼泽,不能同其他的稿件区分开来。例如,在 这个博客上我们会写关于所有东西的内容,但重点放在我们的旅行经验。问题来 了,我们如何才能在首页重点显示这些经验,但并不会忽略所有其他的稿件?这 是我们想出的: 从 wordpress help forums 关于多重循环的各种讨论中让我想到一个使用两次循 环的方法。一个用来查询并仅显示某个分类中的文章。另一个用来和擦寻在所有 分类中的所有的文章。第一个查询是从 the codex 中复制来的,很容易理解: $my_query = new WP_Query('category_name=frontpage&showposts=1'); while ($my_query->have_posts()) : $my_query->the_post(); $do_not_duplicate = $post->ID; 上述代码的意思是,变量my_query 赋值为查询分类名为frontpage 的所有文章 的结果,并仅得到一篇文章。关键点在最后部分,给变量do_not_duplicate 赋 值为返回的单独文章的ID 值。我们在下一步需要这个值。 下面一段代码是很重要很标准的,可以在许多主题中找到。它能获取所有日志: if (have_posts()) : while (have_posts()) : the_post(); //do stuff like format each post endwhile; 这段代码获取所有的日志,并根据//do stuff 这行(依赖于模板)的格式显示。 如果仅仅这样编写代码,就会发生你所选的文章(置顶文章)被显示两次的情况 (一次在置顶区域,另一次则是在所有其他文章区域)。显示这样并不好,所以 这里要使用到do_not_duplicate 函数了。添加到一个if 语句中阻止制定文章显 示两次。下面是代码: if (have_posts()) : while (have_posts()) : the_post(); if( $post->ID == $do_not_duplicate ) continue; //do stuff like format each post endwhile; 代码中的第二个if 语句的意思是,获取所有日志,且当发现一篇文章的ID 值与 do_not_duplicate 的值相等时中断执行(continue 语句),否则显示根据//do stuff 这行的格式显示所有其他的文章。记住,do_not_duplicate 函数值所代表 的文章已经被显示过了。 就这样当你把所有内容放到一起得到了什么?一个动态的置顶文章!且最棒的部 分是当置顶文章被新的一篇代替,之前的文章会在下面所有文章的区域显示出来 (取决于你选择了多少文章显示以及文章的发表频率)。 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 50 页/共 60 页------------------------------------------------- 查询 wordpress 博客资料的 SQL 命令 查询2006 年所有的文章的SQL 命令: SELECT COUNT(*) FROM `wp_posts` WHERE post_date >= ‘2006-01-01′ AND post_date < '2007-01-01' AND post_status = ‘publish’ 查询2006 年所有评论的SQL 命令: SELECT COUNT(*) FROM `wp_comments` WHERE comment_date >= ‘2006-01-01′ AND comment_date < '2007-01-01' AND comment_approved = ‘1′ 查询2006 每篇文章平均字数的SQL 命令: SELECT AVG(LENGTH(post_content)) FROM `wp_posts` WHERE post_date >= ‘2006-01-01′ AND post_date < '2007-01-01' AND post_status = ‘publish’ 查询2006 年文章总字数的SQL 命令: SELECT SUM(LENGTH(post_content)) FROM `wp_posts` WHERE post_date >= ‘2006-01-01′ AND post_date < '2007-01-01' AND post_status = ‘publish’ W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 51 页/共 60 页------------------------------------------------- 给 WP 添加 Ctrl+Enter 回复快捷键 首先是在模版的comments.php 底部加一段JS 代码 最后是找到这段,并修改: 方法二:(万戈) 在 comments.php 中找到以下代码: 修改为: 总结:相比来说,第二种方法更简单,却实现了相同的效果。 需要注意的是:这里的id 一定要和js 里的id 值一样不然无法处理。 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 52 页/共 60 页------------------------------------------------- WordPress 的 10 个杀手级 Hack 技巧 2008 年对 WordPress 来说是非同寻常的一年,它的软件多次更新,最终促成重大版本 2.7 的发布, 许多网站因此也开始使用 WordPress 软件。一些用户在使用过程中对 WordPress 的代码等作了许多 改进,更多 WordPress 用户也因此受益。 这篇文章将向大家介绍 10 个最新最实用的 WordPress hack,它能让你的博客引擎开足马力,挣脱束 缚,最大限度地为你服务。此外,每个 hack 还都附有相关说明,这样你不仅能让 WordPress 释放最 大力量,还能知道如何操作。 1.只在搜索引擎结果中显示 AdSense 广告 问题:众所周知,一般访问并不点击广告。广告点击率 90%是来自搜索引擎的显示结果。另一个问 题是 Google 的智能计价。智能定价意味着 CTR 比较低,点击率单价大打折扣。例如,如果一次点 击正常获得 1 美元的话, Google 的智能计价只会是 0.1 美元。郁闷吧?但是,以下的代码改进就能 解决这个问题了。它只在搜索引擎结果中显示 AdSense 广告,这意味着你能得到更多的点击率,更 高的 CTR. 解决方案: 1. 打开主题中的 functions.php 文件。 2. 粘贴进下代码: function scratch99_fromasearchengine(){ $ref = $_SERVER['HTTP_REFERER']; $SE = array('/search?', 'images.google.', 'web.info.com', 'search.', 'del.icio.us/search', 'soso.com', '/search/', '.yahoo.'); foreach ($SE as $source) { if (strpos($ref,$source)!==false) return true; } return false; } 3. 把以下代码粘贴到 AdSense 广告显示位置的相应模板中。它只会在搜索引擎结果中显示: if (function_exists('scratch99_fromasearchengine')) { if (scratch99_fromasearchengine()) { INSERT YOUR CODE HERE } } W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 53 页/共 60 页------------------------------------------------- 代码说明:这个改进以 scratch99_fromasearchengine()函数开头,包括了用来指定搜索引擎的 $SE 数组变量。这样,只要把新元素加入到数组中就能轻松添加新的搜索引擎。如果使用搜索引擎搜索的 访客包含了 $SE 数组变量, scratch99_fromasearchengine()接着就会返回 true 值。 2.避免在多循环中出现重复文章 问题:由于“杂志型 ”主题的流行,现在很多 WordPressy 用户在他们的首页上都使用了多个循环,因 此他们也迫切需要在第二个循环上避免出现重复文章。 解决方案:使用 PHP 数组就能轻松解决这一问题 1. 创建一个 PHP 数组,并把第一个循环的所有文章 ID 放在其中 – 在post-month 盒模型中,建立一个现实月份 的盒模型。 – 这里我使用了php 函数 the_time(’M') ,用来 调用缩写的月份值。例如:六月June 的英文缩写为JUN。但在我的日期按钮例 子中,并没有使用JUN 代替JUNE,这是因为我并没有调用函数缩写版本的代码。
– 结束月份的盒模型。(即关闭DIV 标签-译者注) – 建立日期盒模型。 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 48 页/共 60 页------------------------------------------------- – 使用PHP 函数 the_time(’d') ,用来调用日期 值,会显示成两位数值。例如:03
– 结束日期盒模型。 Loop n°1
ID; endwhile; ?> 2. 对于第二个循环:使用 PHP 函数 in_array()来检查$ids 数组中是否包含了某个文章 ID。如果 这个文章 ID 没有包含在此数组中,意味着第一个循环中没有此篇文章,那么系统就可以显 示它了。
Loop n°2
ID, $ids)) { the_title();?>代码说明:执行第一个循环时,其中的所有文章 ID 都会被放到一个数组变量中。因此,第二个循环 执行时,我们只要到这个数组中检查当前的文章 ID 是否已显示在第一个循环中就可以了。 W ordP ress 高级教程 草根评论:www .caogenpl.cn ------------------------------------------------第 54 页/共 60 页------------------------------------------------- 3.用页码代替“上页”和“下页” 问题:WordPress 有默认函数来显示上页和下页页面,虽然这比没有这个什么功能好,但是我不明白 开发人员为什么不把页面写进核心代码呢。当然,我们可以用插件来生成页码,但是如果能把页码直 接插入主题岂不更好?! 解决方案:这里使用 WP-PageNavi 插件把页码直接写入主题 1. 首先下载 WP-PageNavi 插件 2. 在硬盘驱动上解压插件存档,并把 wp-pagenavi.php 和 wp-pagenavi.css 文件上传到主题 目录 3. 打开要放置页码的文件(如 index.php, categories.php, search.php,等),找到以下代码: 用以下代码代替以上内容: 4. 接着请修改插件文件。打开 wp-pagenavi.php 文件并找到以下代码( 61 行): function wp_pagenavi($before = '', $after = '') { global $wpdb, $wp_query; 修改成: function wp_pagenavi($before = '', $after = '') { global $wpdb, $wp_query; pagenavi_init(); //Calling the pagenavi_init() function 5. 最后,我们要把 wp-pagenavi 样式表添加到博客。 打开 header.php 文件,把以下代码添加进去: