本文主要通过分析 WordPress 官方主题 twentytwelve 的中的“顶部模板”来了解 WordPress 主题顶部制作需要用到的函数。

顶部模板的代码将应用于 Wordpress 所有的页面,其他页模板需要通过 get_header() 来调用。

<!DOCTYPE html>
<!--[if IE 7]>
<html class="ie ie7" <?php language_attributes(); ?>>
<![endif]-->
<!--[if IE 8]>
<html class="ie ie8" <?php language_attributes(); ?>>
<![endif]-->
<!--[if !(IE 7) | !(IE 8)  ]><!-->
<html <?php language_attributes(); ?>>
<!--<![endif]-->
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<meta name="viewport" content="width=device-width" />
<title><?php wp_title( '|', true, 'right' ); ?></title>
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
<?php // Loads HTML5 JavaScript file to add support for HTML5 elements in older IE versions. ?>
<!--[if lt IE 9]>
<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
<![endif]-->
<?php wp_head(); ?>
</head>

- 阅读剩余部分 -

本文主要通过分析 Wordpress 官方主题 twentytwelve 的中的“首页模板”来了解 Wordpress 主题首页制作需要用到的函数。

首页大概可以分为四个个部分,头部,主体,侧边栏,底部。

<?php get_header(); ?>

get_header():获取头部模板(header.php)文件中的内容,头部模板主要包含的是首页中导航栏的代码,以后再详细分析。

- 阅读剩余部分 -

register_nav_menu() 用于 WordPress 中注册导航菜单。

调用

//在 function.php中 调用
<?php register_nav_menu( $location, $description ); ?>

参数

<?php register_nav_menu( 
      $location,//菜单的名称
      $description //菜单的描述
      );
?>

同时注册多个导航菜单要用到 register_nav_menus() 函数

<?php
register_nav_menus( array(
    'menu1' => '菜单一',
    'menu2' => '菜单二'
) );
?>

另外,注销导航菜单要用到 unregister_nav_menu( $location ) 函数,可以用在子主题的 function.php 中。

添加菜单

add_menu_page():添加一个顶级菜单

<?php   
add_menu_page( $page_title, //菜单页标题
               $menu_title, //菜单标题
               $capability, //访问权限
               $menu_slug,  //菜单别名
               $function,   //执行函数
               $icon_url,   //菜单图标
               $position    //菜单位置
             );
?>

add_submenu_page():添加一个子菜单

<?php   
add_submenu_page( $parent_slug, //父菜单别名
                  $page_title,  //菜单页标题
                  $menu_title,  //菜单标题
                  $capability,  //访问权限
                  $menu_slug,   //菜单别名
                  $function    //执行函数
                );
?>

- 阅读剩余部分 -

获取分类数据

根据文章ID获取文章分类数据:get_the_category()

根据分类别名获取分类数据:get_category_by_slug()

<?php $cat = get_the_category($post_id);//返回数组,参数默认为当前文章ID ?>
<?php $cat = get_category_by_slug($slug);//返回数组?>

根据分类ID或分类对象获取分类数据:get_category()

<?php $cat = get_category( $category,$output,$filter);?>
<?php
$cat = get_category_by_slug($slug);//返回数组?>
<?php
$cat_id = $cat->term_id;//获取分类ID
$cat_count = $cat->count;//获取分类文章数
$cat_description = $cat->description;//获取分类描述
$cat_slug = $cat->slug;//获取分类别名
$cat_parent = $cat->parent;//获取分类父级引用
 ?>

- 阅读剩余部分 -

get_posts() 用于在 WordPress 中提取多篇文章。

调用

<?php $posts = get_posts($args); ?>

参数

<?php
$args = array(
'numberposts' => 5,
'offset' => 0,
'category' => ,
'orderby' => 'post_date',
'order' => 'DESC',
'include' => ,
'exclude' => ,
'meta_key' => ,
'meta_value' => ,
'post_type' => 'post',
'post_mime_type' => ,
'post_parent' => ,
'post_status' => 'publish' );
?>

- 阅读剩余部分 -

调用

在需要调用导航菜单的地方插入<?php wp_nav_menu($args);>

wp_nav_menu($args)函数中,参数$args的默认值

<?php $defaults = array(
'theme_location' => ,
'menu' => ,
'container' => 'div',
'container_class' => 'menu-{menu slug}-container',
'container_id' => ,
'menu_class' => 'menu',
'menu_id' => ,
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => ,
'after' => ,
'link_before' => ,
'link_after' => ,
'items_wrap' => '<ul id=”%1$s” class=”%2$s”>%3$s</ul>',
'depth' => 0,
'walker' => );
?>

- 阅读剩余部分 -

wp-config.php 文件里添加以下两句:)

define('WP_POST_REVISIONS',false);
define('AUTOSAVE_INTERVAL',false);

WP_POST_REVISIONS是设置是否保存修订版本,设为true,就表示每修改一次文章就会在数据库新保存一条数据;

AUTOSAVE_INTERVAL是设置自动保存文章时间,单位为秒,就表示当编辑文章时每间隔3600秒自动在数据库新保存一条数据。

另外,将 wp-admin\post-new.phpwp-admin\post.php里的 wp_enqueue_script('autosave') 注释掉,但是这样在新建文章未保存前不会自动生成固定链接。