标签: wordpress

  • wordpress3.1 功能解释之二-文章样式功能

    wordpress3.1版本 正式发布,看过官方说明之后,渐渐发现wp越来越像CMS了。虽然增加的功能很多,但是国内的教程少之又少,纯英文文档对很多童鞋来说还是有一点点难度的。所以我会陆陆续续写下wordpress3的新增功能的具体用法,助人助己。前面写过一篇WordPress3+的自定义内容类型功能详解,这一篇则是介绍wordpress3.1的文章样式功能。

     

    1.小窥wordpress3.1文章样式

    文章样式一种meta信息,主题可以通过这些信息来定制文章的样式。简单地说,文章样式就是设计某篇文章表现形式的一种方式。利用文章样式功能,你 可以指定某一篇文章所显示出的格式效果。这个功能挖掘出了WordPress在微博方面的潜力,用户可以把视频、链接、图像、音频、引用文字等整合到一 处,并进行相应样式设计。

    假设你发现某个外部网站的某篇文章很有意思,你想分享给你的读者。为了告诉读者你的分享,你得写一篇新文章并给出相关的外部链接,否则读者不知道这是篇什么类型的文章,他们要点开链接读完全文才可能了解你想告诉他们的内容。文章样式功能可以帮你解决这个问题。

    这有点类似于微博,你可以像在微博上一样发表一些小段子,然后不用费很大功夫就可以为不同文章设定不同的样式。例如,当你发现一条值得分享的句子,就可以立即在自己的WordPress博客上分享出来,并且只需要一个点击动作,就可以突出显示这句话。

    文章样式的主要目的就是让WordPress成为一个全方位的博客平台。

    和文章缩略图、菜单、自定义背景等功能一样,文章样式也需要通过主题激活。这意味着,如果你的主题不兼容,那么你就没法使用这个功能。

    警告:若要进行以下操作,最好熟悉HTML、CSS代码,并对WordPress循环函数具有一定了解。

    打开主题的functions.php文件,加入以下代码:

    add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );

    注意:aside和galery只是列举出的两个可用的文章样式而已。可用的文章样式包括:

    aside —— 通常没有标题,类似于社交网站上的状态更新

    chat —— 聊天记录

    gallery —— 图片库(多幅图片)

    link —— 外部链接

    image —— 单幅图片

    quote —— 引用语句

    status —— 简短的状态更新,通常限制在140个字符内,类似微博

    video —— 单个视频

    在functions,php中加入代码后,你会在文章编辑界面右侧的文章发布设置区看到一些新内容。

    编辑完文章之后,你可以在这里更改文章的样式并点击发布,让文章以预先设置好的格式发布到前台。

    但是我们并没有预先设置任何文章样式,因此即使你在下拉菜单里选择了新的样式,前台所显示的效果也和其他文章没什么区别。所以现在我们需要做的就是编辑文章的主循环。

    我们会用到条件标签has_post_format()。

    if ( has_post_format( 'aside' ) {
    // code to display the aside format post here
    } else if (has_post_format('gallery')) {
    // stuff to display the gallery format post here
    } else if (has_post_format('link')) {
    // stuff to display the link format post here
    }else {
    // code to display the normal format post here
    }

    对开发人员来说,这或许算不上什么,但最终用户应该可以受益不少了。

     

  • WordPress3+的自定义内容类型功能详解

    WordPress3+进一步完善了自定义内容类型功能,也算是向CMS迈进了一大步。网络上关于这个功能的介绍少之又少,来来回回就那么几篇转来转去的,那我就来总结一下吧。

    实现方式一:辅助插件

    这里的插件只是辅助你利用这个功能的插件,并不是传统意义上的装上就完事ok的插件,关于插件的介绍大家可参见 wordpress.la的文章《如何在WordPress 3.0中使用自定义内容类型》 我就不多做介绍了

    实现方式二:functions.php中添加自定义代码

    对于完美主义者或者不喜欢插来插去的童鞋可以参考这个方法,废话不多说直接上例子;
    首先打开你的主题的functions.php文件,然后添加代码如下

    [php]
    add_action( ‘init’, ‘create_events’ );
    function create_events() {
    $labels = array(
    ‘name’ => _x(‘Events’, ‘post type general name’),
    ‘singular_name’ => _x(‘Event’, ‘post type singular name’),
    ‘add_new’ => _x(‘Add New’, ‘Event’),
    ‘add_new_item’ => __(‘Add New Event’),
    ‘edit_item’ => __(‘Edit Event’),
    ‘new_item’ => __(‘New Event’),
    ‘view_item’ => __(‘View Event’),
    ‘search_items’ => __(‘Search Events’),
    ‘not_found’ => __(‘No Events found’),
    ‘not_found_in_trash’ => __(‘No Events found in Trash’),
    ‘parent_item_colon’ => ”
    );

    $supports = array(‘title’, ‘editor’, ‘custom-fields’, ‘revisions’, ‘excerpt’);

    register_post_type( ‘event’,
    array(
    ‘labels’ => $labels,
    ‘public’ => true,
    ‘supports’ => $supports
    )
    );
    }
    [/php]

    参数详解:

    add_action告诉wordpress初始化时调用函数create_events

    $label数组告诉wordpress如何显示这个文章类型的相关信息

    $supports数组告诉wordpress这个文章类型可以支持什么(比如文章摘要excerpt)

    register_post_type就是在wordpress注册这个新的文章类型,这个函数有很多选项可用,具体可以参阅相关文章。

    一旦我们把代码添加到function.php后,我们可以在后台管理页面看到如下页面:

    wordpress-自定义文章类型

    点击添加新事件(Add New)你可以像发表一般文章一样来添加新的事情,如下图:

    wordpress-自定义文章类型

    显示自定义内容类型的文章

    为了显示自定义内容类型的文章,请添加下面的代码到循环(loop)中。将“name”用你的内容类型名称替换。 注意: 你不需要在index.php文件中添加自定义的内容类型。你可以创建一个自定义WordPress页面并循环(Loop)里运行下面的查询。
    query_posts( 'post_type=name');
    要显示来自多个内容类型下的文章,将上面的代码改成下面这样,并记得将“movie”改成自定义内容类型的名称。
    query_posts(array('post_type' => array('post', 'movies')));
    使用上面的代码将会显示所有来自普通的内容类型的文章以及其他自定义内容类型下的内容。

  • WordPress中is_single()与is_singular()的区别

    简单的认为is_sigular()相当于is_single()||is_page()||is_attachment()没有什么大问题。
    也就是说,有is_single()||is_page()

    <!–?php if ( is_single()||is_page() ) { ?–>

    的地方,都可以替换成is_singular()

    <!–?php if ( is_singular() ) { ?–>

    但是其实上述这种理解不是太准确。来比较一下is_single()与is_sigular()的文档。
    is_single()是可以加参数的。参数可以是post_id,post_slug,post_title。2.5之后还可以同时对这几个参数加以判断。
    当不带参数时,返回的是当前显示的是不是一个单独的post(而且类型不是page和attachment)。
    而带了参数,返回的就是当前显示的是不是编号/标题/标志为“XXX”的那篇post。
    在数据库里,is_single不仅要查询ID是否存在,还要保证type是“post”而不是“page”,“attachment”甚至“revision”。

    is_sigular()则简单的多。就是当前显示的是不是一条单独的post所形成的页面。
    在数据库里,is_sigular()也只是判断ID是否存在即可。

  • wordpress自带的缩略图功能全解析

    上篇(优化缩略图组件timthumb.php)说了外置缩略图组件timthumb.php的优化。接下来说一说如何利用wordpress2.9版本以上自带的缩略图功能:

    1.添加功能

    在function.php中插入代码

    add_theme_support( ‘post-thumbnails’ );

    或者你也可以增加个函数判断缩略图功能是否存在:
    if ( function_exists( 'add_theme_support' ) )
    add_theme_support( 'post-thumbnails' );
    (更多…)

  • 强大的无插件实现相关文章,永不落空版

    相关文章使很多wordpress的Bloger关注的问题,相关文章可以大大增加PV,也可以使你八百年前发布的文字能出个头。很多Bloger都是用插件实现的,但对于我们这些有“代码洁癖”和效率强迫症的人来说插件不是最佳的实现方式。so找到下面代码实现相关文章。

    原理是先查看与标签(关键字)相关的标题,如果没有那就取同分类下的X篇文字(不要告诉我分类下没有5篇文字 -_- ! )。

    源代码来自:http://kan.willin.org/ 我做了修正:修正了当取得同分类下文章的时候还会显示没有相关的小BUG。


    <h3>你可能也感兴趣:</h3>
    <ul>
    <?php
    $post_num = 5; // 數量設定.
    global $post;
    $tmp_post = $post;
    $tags = ''; $i = 0; // 先取 tags 文章.
    $exclude_id = $post->ID;
    $posttags = get_the_tags();
    if ( $posttags ) {
      foreach ( $posttags as $tag ) $tags .= $tag->name . ',';
      $tags = strtr(rtrim($tags, ','), ' ', '-');
      $myposts = get_posts('numberposts='.$post_num.'&tag='.$tags.'&exclude='.$exclude_id);
      foreach($myposts as $post) {
        setup_postdata($post);
        ?>
        <li> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
        <?php
        $exclude_id .= ','.$post->ID; $i ++;
      }
    }
    if ( $i < $post_num ) { // 當 tags 文章數量不足, 再取 category 補足.
      $post = $tmp_post; setup_postdata($post);
      $cats = ''; $post_num -= $i;
      foreach ( get_the_category() as $cat ) $cats .= $cat->cat_ID . ',';
      $cats = strtr(rtrim($cats, ','), ' ', '-');
      $myposts = get_posts('numberposts='.$post_num.'&category='.$cats.'&exclude='.$exclude_id);
      foreach($myposts as $post) {
        setup_postdata($post);
        ?>
        <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
        <?php
        $i ++;
      }
    }
    if ( $i == 0 ) echo '<li>尚無相關文章</li>';
    $post = $tmp_post; setup_postdata($post);
    ?>
    </ul>

  • WordPress 主题免费提供 HTML5+CSS3 Ajax嵌套评论

    king51-blog V0.9

    特点:
    HTML5+CSS3
    Ajax嵌套评论
    自带评论墙
    自动启用Gzip
    自定义导航(wordpress3以上支持)

    详细更新以及下载转至:主题下载

    http://blog.king51.com/theme1/

  • 启用 WordPress object-cache 缓存

    这次优化的方法是用 WordPress Object Cache 缓存页面,我以前用过缓存插件,但是发现效果绝对远没有此方法显著。而且我在最新的 WordPress 2.8 下完美地实现了这一缓存效果,所以强烈推荐。

    WordPress Object Cache 可以将一个耗时查询或者运算结果存储到一个缓存文件,这样就可以让我们不用老是重复到数据库中获取不变的数据,以缩短用户查看页面的速度。那么,我们如何开启它呢?

    1、PHP 需要安装上 Memcached 扩展

    是否安装了 Memcached 扩展请咨询服务器管理员,至少我的主机已经安装上了 Memcached 扩展。

    2、编辑 wp-config.php 文件,添加如下代码:

    // Enable the WordPress Object Cache:
    define('ENABLE_CACHE', true);

    3、新建 /wp-content/cache 目录,设置权限 777。

    4、点此下载 object-cache.php 文件,解压后上传至 /wp-content 目录。

    在启用 object cache 之前,我首页的数据库查询次数在60次左右,现在只有20多次,足足压缩了三分之二,不只加速了 WordPress,而且减轻了数据库的负载,效果相当明显。

    本文部分转自:http://www.wopus.org/wordpress-deepin/tech/462.html

  • WordPress 技巧:显示同个父页面的其他子页面的链接

    假设以下情况,有一个父页面,然后它有一些子页面。当你打开父页面的时候,你想在 sidebar 显示它的子页面的链接。 当你打开子页面链接的时候,你还是想要显示同样一组链接。现在问题是,首先要判断现在的页面时是相同父页面的其他子页面。我们无法通过一个简单 WordPress 函数就能解决这个问题。

    下面是详细解决方法:

    <?php
    if($post->post_parent)
        $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
    else
        $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
    if ($children) {
        echo '<ul>';
            echo $children;
        echo '</ul>';
    } ?>
  • [更新]免费wordpress主题 king51-blog

    免费wordpress主题 king51-blog更新至 0.6

    HTML5+CSS3编写,代码简洁,文件小的不能再小了~~~

    目前主体只适用于wordpress3及以上.

    下载地址:http://down.qiannao.com/space/file/king51/-4e0a-4f20-5206-4eab/King51blog.rar/.page

    更新:1.原生嵌套评论

                 2.改进浏览器兼容性

                 3.增加加载进度条

                 4.细节上的代码优化.

  • wordpress工作原理

    WP初始化的过程:当你输入 http://XXX.com/wordpress 对wordpress进行初始化时,wordpress默认会找
    根目录下的index.php页面,看一下index.php页面。

    define('WP_USE_THEMES', true);
    /** Loads the WordPress Environment and Template */
    require('./wp-blog-header.php'); ---把/wp-blog-header.php包含进来

    你会发现,它会去调用根目录下的wp-blog-header.php,我们继续看wp-blog-header.php。

    if ( !isset($wp_did_header) ) {
    $wp_did_header = true;
    require_once( dirname(__FILE__) . '/wp-load.php' ); ---加载wp-load.php
    wp(); ---加载function WP();
    require_once( ABSPATH . WPINC . '/template-loader.php' ); ---加载模板文件
    }

    通过wp-load.php,wordpress先后把wp-config.php, wp-setting.php,classes.php,fucntions.php,

    query.php等文件加载进来,并建立了三个全局变量,$wp_the_query,$wp_rewrite和$wp ,分别为WP_Query,
    WP_Rewrite和WP类的实例。然后,wp-blog-header执行wp()函数,并通过其调用$wp所属WP类的main方法,
    这个方法又调用一系列方法,但最重要的是parse_request方法, WP从这里开始解析URL并建立主循环。

    我们看一下wordpress的主方法:


    function main($query_args = '') {
    $this->init(); --初始化环境
    $this->parse_request($query_args); --解析请求
    $this->send_headers(); --发送头信息
    $this->query_posts(); --查询日志
    $this->handle_404(); --操作404(URL地址不存在)
    $this->register_globals(); --注册全局变量
    do_action_ref_array('wp', array(&$this));
    }

    这基本上就是wordpress初始化时的信息。
    下面就讨论一下当我们设置自定义的永久链接时,wordpress的运作过程。

    当我们使用了自定义的永久链接的时候,wordpress会自动生成.htaccess文件,并且在这个文件中生成相
    对应于永久链接的匹配规则,在wordpress/wp-includes/rewrite.php中有针对.htaccess文件的重写规则,其
    中$use_verbose_rules参数规定了输出信息的详尽和简约,默认的情况下为false。输出的信息比较简单,
    如下

    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    # END WordPress
    

    如果想查看完整的匹配规则,就把$use_verbose_rules设置为true。

    wordpress在对使用了自定义的永久链接进行处理时,它还是会调用wp-include/classes.php文件中
    的parse_request函数,对发过来的请求进行解析,无论是否为pathinfo类型的请求,都会被赋值给
    $request参数,然后调用该参数与.htaccess中的规则进行匹配,如果找到一个匹配就会“发送头信息”
    、“查询日志”,如果没有任何匹配就会返回404错误。

  • 教你如何给WordPress主题创建内置联系表单

    网上有很多WordPress插件可以给你的博客添加联系表单,但其实并不一定要插件才能实现,这篇教程就将向大家显示如何给WordPress主题创建一个内置的联系表单。

    步骤一: 创建页面模板

    当然第一步是要创建一个页面模板。先创建一个 page-contact.php的文件,然后将page.php文件里的代码复制到这个新建的文件里。

    为了确保WordPress能够将它当作一个页面模板来看待,我们需要在 contact.php文件的开头添加下面的注释

    (更多…)

  • WordPress插件:WP-PostViews Plus

    WP-PostViews Plus 是一个基于 WP-PostViews 插件的增强版。增强后的插件不仅可以显示文章的浏览次数或者按浏览次数显示热门文章,还可以让你显示的浏览数区分是读者还是爬虫,并扩充了不少函数,比如按天、分类显示浏览最多的文章等等。

    查看原文:WordPress插件:WP-PostViews Plus插件下载地址

    演示:http://www.itbloger.info/54 文章下面