WordPress制作

114 阅读3分钟

####一、基础

#####1 导入页头页面中的代码,条件标签

<?php get_header(); ?>

2 Title动态设置

<title><?php if ( is_home() ) {
		bloginfo('name'); echo " - "; bloginfo('description');
	} elseif ( is_category() ) {
		single_cat_title(); echo " - "; bloginfo('name');
	} elseif (is_single() || is_page() ) {
		single_post_title();
	} elseif (is_search() ) {
		echo "搜索结果"; echo " - "; bloginfo('name');
	} elseif (is_404() ) {
		echo '页面未找到!';
	} else {
		wp_title('',true);
	} ?></title>

3 导入wordpress目录下的路径

stylesheet_url == "wp-content\themes\Aurelius"
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />

4 添加pingback,可以在里面添加以下代码

<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />

5 通过php的api获取博客的页面地址或者博客的设置信息

<h1 id="logo" class="grid_4"><a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1>
<h2 class="grid_12 caption clearfix"><?php bloginfo('description'); ?></h2>
<?php echo get_option('home'); ?>  输出你的博客首页网址
<?php bloginfo('name'); ?>  输出你的博客名称
<?php bloginfo('description'); ?>  输出博客描述

博客名称和描述可以在WordPress管理后台 - 设置 - 常规那里更改。以后制作你自己的WordPress主题的时候,你可参照上面的说明对你的主题进行修改。

6 一些api

//在Body后面生成class,根据不同页面会生成不同的class
<body <?php body_class(); ?>>

####二、菜单栏

1 直接获取所有的菜单,但是样式没法自定义

<?php 
    // 列出顶部导航菜单,菜单名称为mymenu,只列出一级菜单,数据来源是后台 - 外观 - 菜单添加的栏目
    wp_nav_menu( array( 'menu' => 'mymenu', 'depth' => 1) );
?>

#####2 获取所有菜单分类,可以根据条件查询分类和自定义显示样式

常用函数-get_terms()

示例(查询分类,查询个数大于0的,就遍历生成li标签,自定义样式):

<ul id="menu">		
<?php
	// 获取分类
	$terms = get_terms('category', 'orderby=name&hide_empty=0' );

	// 获取到的分类数量
	$count = count($terms);
	if($count > 0){
		// 循环输出所有分类信息
		foreach ($terms as $term) {
			echo '<li><a href="'.get_term_link($term, $term->slug).'" title="'.$term->name.'">'.$term->name.'</a></li>';
		}
 	}
?>		
</ul>

对象属性的意义如:slug:分类缩略名,name:分类名,term_id:分类id

####3 使用读数据库的方式获取分类列表 如果你了解WordPress的数据库,可以发现WordPress的分类信息都存储在wp_terms和wp_term_taxonomy这两个表中,wp_terms存储基本信息(包括文章分类、文章标签和链接分类等),wp_term_taxonomy用于存储进一步描述(用于存储描述、区分分类和标签等)。我们可以使用SQL来从这两个表中获取我们想要的分类列表

<ul id="menu">		
<?php 
	$cats = $wpdb->get_results("SELECT {$wpdb->prefix}terms.term_id, name
							FROM {$wpdb->prefix}term_taxonomy, {$wpdb->prefix}terms
							WHERE {$wpdb->prefix}term_taxonomy.term_id = {$wpdb->prefix}terms.term_id
							AND taxonomy = 'category'");
							
	if($cats) {
		foreach($cats as $cat) {
			echo '<li><a href="'.get_category_link($cat->term_id).'" title="'.$cat->name.'">'.$cat->name.'</a></li>';
		}
 	}
?>		
</ul>

####4 如何获取当前分类的id 有些时候我们需要制作一个子导航,如www.nashowgroup.com/?p=58&lang=…左边的人力资源导航,这个导航可以是任意项目,如当前分类下的子分类或者当前分类下的文章等。那么首要问题就是,如何获取当前分类的id,这样才可以进行下一步的动作。

在分类页获取当前分类的id:

if ( is_category() ) {
	$cat_id = get_query_var('cat');
}

在文章页获取该文章的第一个分类:

$cats = get_the_category();
if($cats)
    $cat_id = $cats[0]->cat_ID;

####5 子导航的制作 上面我们讲解了如何获取当前分类的id,下面我们来讲讲如何制作子导航。首先,我们来制作一个当前分类下子分类的子导航,这里用到wp_list_categories()来列出子分类,当然你可以用我前面介绍的两种方法来获取分类

<ul>
<?php
// 这里我们用到上面获取到的$cat_id,获取该分类下的所有子分类
wp_list_categories('orderby=name&hide_empty=0&child_of=' . $cat_id);
?> 
</ul>