致力于打造一个优秀的建站资源共享学习平台!

爱站窝四川

WordPress 分类及分类下的文章添加模板选择功能

爱站窝查看全部>>

人气136

本人一直在用一个分类和文章模板选择器的,不记得是从哪里弄来的,就想拿出来分享一下。利用这个模板选择器你可以给每个分类和其下的文章指定模板,非常方便,制作模板也很简单,只要加上注释代码即可。下面是图片:

template

要实现此功能, 你需要在你的主题根目录文件夹下新建一个template.php, 并将下面的代码复制进去(或者点此下载该文件):


<?php
function cat_temp_menus() {
	add_menu_page('模板选择器', '模板选择器', 'manage_options', basename(__FILE__), 'cat_temp_options_page');
}
function cat_temp_meta() {
	global $wpdb,$post_ID;
	$templates = cat_temp_get_page_templates();
	$current = cat_temp_post_template($post_ID);
	$out = '';
	$out .= '请选择';
	$out .= '默认模板';
	foreach ($templates as $template =>$file) {
		$out .= ''.$template.'';
	}
	$out .= "";
	$out .= "

选择

"; echo $out; } function cat_temp_post_submit($post_ID) { global $wpdb; if ($_POST['cat_temp_template']) { $templates = (get_option("cat_temp_post")); if ($_POST['cat_temp_template'] != 'none') { $templates[$post_ID] = $_POST['cat_temp_template']; }else { if ($templates[$post_ID]) { unset($templates[$post_ID]); } } update_option("cat_temp_post",($templates)); } } function cat_temp_post_template($ID) { $templates = (get_option("cat_temp_post")); return $templates[$ID]; } function cat_temp($template) { global $wp_query; $post_obj = $wp_query->get_queried_object(); if (is_single()) { $data = cat_temp_get_data(); $categories = get_the_category($post_obj->ID); }else if (is_category()) { $data = cat_temp_get_data(true); $categories[0] = &get_category($post_obj->cat_ID); } $temp_data; foreach((array)$categories as $category) { if ($data[$category->term_id]['template'] != '0') { $temp_data[$data[$category->term_id]['template']] = $data[$category->term_id]['priority']+($category->term_id/80000); } } foreach((array)$data as $key =>$cat) { if ($cat['all'] == "all"&&$cat['template'] != "0") { $id = (is_single()) ?(int)$cat['id'] : $key; $descendants = get_term_children($id,'category'); if ($descendants &&in_category($descendants)) { $temp_data[$cat['template']] = $cat['priority']+($cat['id']/80000); } } } if (is_array($temp_data)) { asort($temp_data); $template = array_shift(array_keys($temp_data)); } if (is_single()) { $overRule = cat_temp_post_template($post_obj->ID); if ($overRule) $template = $overRule; } if (!empty($template)) { if (file_exists(TEMPLATEPATH.$template)) { include(TEMPLATEPATH.$template); exit; } } } function cat_temp_is_cat($cat,$_post = null) { if (in_category($cat,$_post)) { return true; }else { $descendants = get_term_children((int)$cat,'category'); if ($descendants &&in_category($descendants,$_post)) return true; } return false; } function cat_temp_get_page_templates($str = "Template Name") { $themes = get_themes(); $theme = get_current_theme(); $templates = $themes[$theme]['Template Files']; $page_templates = array(); if (is_array($templates)) { foreach((array)$templates as $template) { if (!file_exists($template)) $template = WP_CONTENT_DIR.$template; $template_data = implode('',file($template)); $name = ''; if (preg_match('|'.$str.':(.*)$|mi',$template_data,$name)) $name = $name[1]; if (!empty($name)) { $page_templates[trim($name)] = str_replace($themes[$theme]['Template Dir'],"",$template); } } } return $page_templates; } function cat_temp_cats($item,$current,$archive=false) { if ($archive) { $templates = cat_temp_get_page_templates('Archive Template'); $default = '/archive.php'; }else { $templates = cat_temp_get_page_templates(); $default = '/single.php'; } $out = ''; $out .= '未指定'; $out .= '默认模板'; foreach ($templates as $template =>$file) { $out .= ''.$template.''; } $out .= ""; return $out; } function cat_temp_categories($child = 0) { $data = array( "hide_empty"=>false, "child_of"=>$child, "pad_count"=>false, ); $categories = get_categories($data); $list = array(); foreach ((array)$categories as $cat) { if ($cat->parent == $child) { $list[] = array( "name"=>$cat->name, "id"=>$cat->cat_ID, "count"=>cat_temp_getALLposts($cat->cat_ID), "acount"=>$cat->category_count, "child"=>cat_temp_categories($cat->cat_ID), ); } } return $list; } function cat_temp_li_fun($data) { $out = "
    "; foreach ((array)$data as $root) { $out .= "
  • ".$root['name']." (".$root['count'].")
  • "; if (count($root['child']) >0) { $out .= cat_temp_li_fun($root['child']); } } $out .= "
"; return $out; } function cat_temp_priority($item,$current,$archive) { $pri = array("最低","低","中等","高","最高"); $out = ''; $t = 0; for ($i = 10;$i >= 1;$i = $i-2) { $out .= ''.$pri[$t].''; $t++; } $out .= ""; return $out; } function cat_temp_getALLposts($ID) { $td = array( 'numberposts'=>-1, 'category'=>$ID, ); return count(get_posts($td)); } function cat_temp_get_data($archive=false,$id=false) { $t = (!$archive) ?(get_option('cat_temp_data')) : (get_option('cat_arch_data')); return (!$id) ?$t : $t[$id]; } function cat_temp_update($data) { $archive = $data['archive']; unset($data['archive']); update_option('cat_temp_data',($data)); update_option('cat_arch_data',($archive)); } function cat_temp_delete() { delete_option('cat_temp_data'); delete_option('cat_temp_post'); delete_option('cat_arch_data'); } function cat_temp_sub_cats($id,$data,$archive=false) { $out .= ' 用于子分类'; return $out; } function cat_temp_templates($id,$archive) { if ($archive) { $title = "分类"; $class = " class=\"noborder\""; $class2 = " noborder"; }else { $title = "文章"; } $data = cat_temp_get_data($archive,$id); $out .= "$title:"; $out .= "
".cat_temp_cats($id,$data['template'],$archive); $out .= cat_temp_sub_cats($id,$data['all'],$archive).'
'; $out .= "
".cat_temp_priority($id,$data['priority'],$archive)."
"; return $out; } function cat_temp_td_fun($data,$padding = 5) { $out = ""; foreach ((array)$data as $root) { $out .= ''; $out .= ''.$root['id']; $out .= ''; $out .= ''; $out .= ''.$root['name'].''; $out .= cat_temp_templates($root['id'],true); $out .= ''.$root['acount'].' ('.$root['count'].')'; $out .= ""; $out .= cat_temp_templates($root['id'],false); $out .= ''; if (count($root['child']) >0) { $out .= cat_temp_td_fun($root['child'],$padding+10); } } return $out; } function cat_temp_options_page() { $_GET['lang'] = 'all'; ;echo '

模板选择器

'; if ($_POST['update_theme']) { cat_temp_update($_POST['data']); echo '

成功保存.

'; } ;echo '

请选择分类和页面模板

'; if(function_exists('settings_fields')){ settings_fields('cat-temp-options'); }else { wp_nonce_field('update-options'); ;echo ' '; } ;echo '
';echo cat_temp_td_fun(cat_temp_categories());;echo '
ID 分类 模板 等级 文章数
说明
按照以下说明制作模板:
:
										
									
:

										
									

';
}
add_action('admin_menu','cat_temp_menus');
add_action('save_post','cat_temp_post_submit');
add_filter('template_redirect','cat_temp');
?>

然后在functions.php 中引入这个文件即可:

include (TEMPLATEPATH . '/template.php');
TA的作品
  • Mohtml 作品/设计展示自适应wordpress主题 模板兔出品
  • QYKCMS后台软件v4.1.3部分操作界面截图
  • 轻松制作一款与众不同的QYKCMS网站主题
  • 怎样设置可以让QYKCMS系统运行得更快?
  • 使用 Apache .htaccess 文件设置QYKCMS伪静态规则的方法
  • QYKCMS后台管理软件入门级操作视频教程
  • IIS下使用 web.config 文件设置QYKCMS伪静态规则的方法
  • 同一个网站空间使用QYKCMS建立多个独立站点
  • QYKCMS后台管理员密码忘记了怎么办
  • QYKCMS 网站系统4.0 标签大全
查看全部

全部评论: 0

在线咨询
有什么可以帮到你
点击咨询

账号登录

忘记密码

第三方账号快速登录

Q Q 登 录 微 博 登 录

账号注册 已经有账号? 立即登录

发送验证码

第三方账号快速注册

Q Q 登 录 微 博 登 录