• zAlive主题已在Github开源

    其实zAlive主题一直都是开源的并且在WordPress官方主题目录提供下载,最近将其放在Github上面,原因有二

    • 使用Git版本控制,这样妈妈再也不用担心文件丢失之类的问题了
    • 装装逼
  • WordPress中is_front_page()和is_home()的用法及区别

    最近在WordPress论坛里有朋友在反馈zAlive主题 的幻灯片设置有问题,具体表现为设置了幻灯片为只在首页显示,但是在博客页面还是会显示(WordPress可以将首页设置为一个静态页面,用另外一个页面显示博客,详见>>Creating a Static Front Page)。

    这就让我想到了is_front_page()is_home(),因为前一段在做主题的时候就查过(囧,当时没认真看),为什么现在还有问题?既然不知道那就再查一下,先来看下两者的官方文档吧。

  • 用get_comments实现WordPress带头像最新评论

    前一段在制作zAlive主题的时候需要一个带头像最新评论widget,网上Google了一大圈发现用的最多的是SQL,我也就直接拿来用了,而且神奇的是通过了WP的主题审核,但是后来在更新主题的时候怕不给通过,就索性找别的方法,也就是今天的主角,get_comments()

    其实用get_comments()实现WordPress带头像最新评论zww很早就有一篇文章介绍,但是从2010年到现在WP已经升级了N多个版本,原来的参数有的已经失效,于是我就重新翻阅文档,用新版的get_comments实现WordPress带头像最新评论。

    我写的这个可以指定获取的评论数,头像尺寸,评论字符数

    function zAlive_recentComments($count,$avatarSize,$excerptLength){
        $comments;
        if( $count != 0 ){
          //新版的get_comments()不能直接获取指定类型的评论(比如会获取到pingback/trackback),+30是为了多获取一些评论,从而减少获取不到指定数量的评论的机会
          $comments = get_comments( apply_filters( 'widget_comments_args', array( 'number' => $count + 30, 'status' => 'approve', 'post_status' => 'publish' ) ) );
        }
        $valid_comments_number = 0;//有效评论数
        $output = '';
        if( !empty ( $comments ) ){
          foreach ($comments as $comment) {
            $post = get_post( $comment->comment_post_ID );
            //评论不是pingback或trackback并且评论所属文章没有密码保护
            if( empty ($comment->comment_type ) && empty ( $post->post_password ) ){
              $output .= '<li class="clearfix">'. get_avatar($comment, $avatarSize) .'<div class="comment-data"><a class="title" href="' . get_permalink($comment->comment_post_ID) . "#comment-" . $comment->comment_ID . '" title="on ' . strip_tags( $post->post_title) . '">' . wp_html_excerpt( strip_tags ( $comment->comment_content), $excerptLength ) . '</a>' .'<span class="comment_author detailed visible-desktop">From <span class="author">' . $comment->comment_author . '</span>&nbsp;&nbsp;<span class="date">' . $comment->comment_date . "</span></span></div></li>";
              $valid_comments_number++;
              if( $valid_comments_number == $count )
                break;
            }
          }
        }
        $output = convert_smilies($output);
        echo $output;
      }
    

    然后就是调用了,比如zAlive_recentComments(10,40,100)

  • WordPress主题提交及审核

    想必有很多同学想制作一款属于自己的主题并将其提交给WordPress主题官方目录,我曾经这样想过并且现在已经成功提交了一款主题(zAlive主题),这篇文章就以我提交zAlive主题的过程来总结下WordPress官方主题提交及审核。

    提交前应做的准备

    • 阅读主题制作规范及审核要等文档

      虽说本文不设计具体的制作教程,但是因为阅读这些文档直接关系到主题的最终命运,并且能避免你走弯路,甚至是掉进自己挖的坑(比如我早期的主题中很多需要翻译的文字我用的是中文,而非英文,而人家文档中早早的就说明了需要用英文(Themes must provide all public-facing text strings in English.),然后再翻译成多语言版本)。为了你的主题能够光荣的通过审核并应用于千万WordPress用户,自己点下面的链接进去看看吧。

    • 主题检查及测试

      测试主题能让你知道自己主题的问题,还能够缩短审核流程。至于具体的测试流程我就不再说了,提供几个有用的链接:

    • 一个正常能用的WordPress.org网站账号
    • 一个常用邮箱(因为主题提交好的feedback都会发到这个邮箱)
    • 一个制作好并zip打包的WordPress主题(文件最好带上版本号比如zAlive.1.2.1.zip,并且style.css也同样改好版本号)
    • 几个浏览器(个人意见,我用Chrome及Firefox都无法提交所以最终完成任务的是IE,WordPress官方推荐用Chrome)

    上传主题

    前面说的准备好之后就可以正式提交你的主题了:

    1. 打开链接>>WordPress主题上传
    2. 登陆你的WordPress账号
    3. 选择文件并上传

    在上传成功之后网页上会提示主题是否上传成功,还会给一些其他的信息(和WordPress主题测试插件产生的测试信息基本一样),如果有Fail(失败)或Required(必须):XXX之类的信息,你一定要修改好并上传新版本,如果是Recommended(推荐)之类的信息能修改的也修改吧(比如我的zAlive主题最初在上传后有4个Recommended信息,其中一个是让在style.css里面加上.bypostauthor的定义,开始我不愿意加后来审核的时候审核员也让我加我才给加上了)

    审核

    主题上传成功后你的邮箱会收到封邮件(比如我的邮件标题是[WordPress Themes] zAlive – feedback),里面有你主题上传后WordPress网站自动生成的ticket链接,以后主题审核过程中的反馈都在该ticket里面。 生成了ticket并不代表已经有人在审核(废话),你可以点击这里>>查看你的ticket在队列中的位置,新上传的主题会在下面蓝色的区域。另外ticket被系统自动分为4种优先级,按下面顺序依次降低:

    1. 审核通过的主题(Currently Approved Themes,通常是由于主题升级产生的)
    2. 审核队列里超过两星期的(Tickets Older Than 2 Weeks)
    3. 之前已审核过但未通过的(Previously Reviewed, Not-Approved Themes)
    4. 新上传未审核的主题(New Themes, Never Reviewed)

    由于你的主题是新上传的,所以优先级最低,是第四优先级(不过现在也不用担心,现在审核速度很快的,我的是在1天后被分给审核员的)。在被人工审核前你可以正常修改代码并上传新版本,这并不影响你的ticket在队列中的位置。 如果之后收到邮件提示被人工审核了,那么就等待吧,人家说什么了就看看并给出回复,然后修改主题上传新版本(与之前上传主题一样,不是在ticket页面上传附件,另外记得修改版本号),直到通过审核前都是这么个流程。

    吐槽

    我在等待zAlive主题审核过程中曾经遇到过一位差劲的审核员,完全属于站着茅坑不拉屎的人(被他占了两个星期的坑,而我的主题从提交到审核通过共用了三个星期),在我的第3个ticket创建后被分配给了他(hiddenpearls),但是呢,分配后1星期没有任何反馈,直到另外一位审核员(chipbennett,好像是管理员)询问他为毛没有任何反应的时候,这家伙说他在度假,下周一会回来并审核!!!好吧,度假,那我就等吧,可是结果呢,在他说的日期过了两天后还是没有任何反应,我艹,这不完全是坑爹嘛!我知道审核主题都是义务劳动,没有酬劳的,我完全理解,我完全可以等,但是呢,你就不能给我回复下或者是给别的审核人员说下然后再分配给别人?另外言而无信这样的行为你又该作何解释呢? 无奈之下,我到主题审核人员邮件列表里面订阅了邮件,并发了邮件说明问题,结果分分钟人家就给了邮件回复并发邮件给其他人员看是否有空可以把ticket分配出去,然后没过多久ticket就成功被再次分配并审核了,所以嘛,你看人家这素质,再对比下之前那位,呵呵~~ 看到了吧~ 参差不齐啊! 所以如果你也遇到类似的问题,或者在主题审核上有问题也可以订阅这个邮件列表并发邮件(一般情况下不需要的,在ticket里面有问题的话回复给审核员,他是会给你回复的)。

  • WordPress升级到3.6

    其实我很早就知道最近WordPress要升级了,因为前几天在提交zAlive主题的时候在WordPress主题目录里面看到了Twenty Thirteen主题的ticket,当时还在纳闷这货是咋回事,等到第二天WordPress发布3.6更新后才恍然大悟(够迟钝,不过话说我当时也没多想嘛~

  • WordPress主题自带Widget翻译无效解决方法

    问题描述

    最近在将前些天做的zAlive主题优化,准备向WordPress官方目录提交,优化过程中不可避免的要将主题国际化(翻译,多语言)。问题出来了:语言包制作好之后,前台页面的翻译没问题,但是后台Widget中主题添加的Widget没有翻译过来。

    解决过程

    起初我只注意到Widget没有翻译过来,于是就向谷歌求救,结果一无所获,然后又翻看WordPress国际化方案,当看到I18n for widgets developed on 2.8+ 时以为Widget的翻译需要用load_plugin_textdomain这个函数,而非load_theme_textdomain。但是事实也并非如此,在我尝试了好多次之后翻译依然无效。

    毫无头绪的我着实懵了,后来在无意中点击到了菜单设置页面,发现菜单也没翻译过来,我就在想是不是所有的主题都这样,WordPress本身就这样?于是将主题切换为WordPress自带的Twenty Twelve,而Twenty Twelve中无论Widget还是菜单翻译都没问题,英文环境下Widget和菜单都是英文,中文环境下Widget和菜单都是中文。看来是我的主题哪里不对劲!

    打开Twenty Twelve的functions.php 发现load_theme_textdomain的调用在add_action( ‘after_setup_theme’, ‘twentytwelve_setup’ );中的twentytwelve_setup函数最上方。对比我的zAlive主题中的functions.php发现我用的是add_action( ‘init’, ‘zAlive_theme_setup’ ),看来问题就在这里,我又打开WordPress Action_Reference发现init在after_setup_theme之后。

    WordPress Action

    WordPress Action

    总结

    Widget以及菜单翻译问题在我将init修改为after_setup_theme后解决了,看来问题就是action的执行顺序造成的,大家以后在做主题的时候还是用after_setup_theme好了

  • 每日一谈:WordPress用插件OR代码?

    相信很多最开始用WordPress的朋友都会装几个插件来满足博客的一些功能。不过到了后期,慢慢发现有很多功能是可以不用插件,直接用代码实现的。

    我认为,插件和代码有这么几点可以比较的地方。

    1、功能

    一般来说,插件的功能比较强,考虑的很全面,而且是做过比较多的测试,能适应比较多的环境。代码呢,一般功能上也够用,但是很少有插件考虑的全面。

    2、易用性

    插件只要会安装,然后按照插件的说明基本上就可以了,比较简单。

    代码的要求就高了点,要会改代码,这对没接触过WordPress或网页的朋友来说就比较困难了。

    3、设置界面

    插件的界面比较美观,很人性化,设置很容易。

    代码一般只有执行的部分,WordPress后台是看不到设置的,也就谈不上界面了。

    4、速度

    插件由于加载的文件比较多,另外考虑了很多情况,文件中可能有比较多的代码,如果插件太多的话,速度很可能就变慢了。

    代码一般比较精简,针对特定的功能有特定的代码,速度比较快。

    5、安全性

    所谓树大招风,一个插件用户多了,安全问题也来了,WordPress的攻击方式中就有利用插件漏洞的,不过一般情况下很少。

    代码呢,一般使用的人数比较少,也就相对安全,就像windows和Linux一样。

    你,喜欢用什么方式来实现WordPress的功能呢?

  • 每日一谈:WordPress主题选择技巧

    目前的博客程序有很多,而用户数量最多的自然是WordPress了。

    WordPress作为世界级流行的博客程序,用户众多,插件众多,主题也众多。

    那么,当一个博主要用WordPress作为博客程序的时候,他应该选择什么样的WordPress主题呢?

    从我使用WordPress的一些经验来说,有这么几点要注意的。

    1、合适

    你做什么类型的内容,就要选择什么类型的主题,色彩、布局都要考虑,选择之前假象下,如果你是读者,这样看会不会舒服。

    2、个性

    要让读者一看就知道这个是你的博客,要有自己的特色。

    对大部分朋友来说修改主题并不是个容易的事情,那么找人给你做个漂亮的logo,给你的博客起个个性的名字(这个虽然不是主题选择时考虑的,但这同样会让你在读者那留下深刻印象)

    3、兼容性

    选择的主题最好是兼容各个浏览器(IE 6/7/8 Firefox Chrome Safari Opera等等)。这个就要考验你选择的主题作者的功力了。

    4、不要经常更换主题

    如果经常换主题,读者可能会觉得你比较花哨,相反,则能让读者记住你的博客是什么样子,让读者更容易摸清你的博客的布局。

第1页,共4页1234