一个小项目需要这个功能 就写出来了 分享一下 至于怎么实现自己分析下代码  这里还需要一个给分类目录自定义字段的插件
首先我把目录作为分级菜单 菜单是进去一个显示该级别下所有自菜单 一直循环 可是一直没有尽头 我们需要循环遍历是否到头了

该代码实现了如下功能
1、用分类目录当多级菜单 级别当然没有限制啦 你要是过火弄一百级都能完全掌控
2、自动识别是否达到了最后一个层级 达到了 自行设定use_nav 设置上一级的ID号即可 读取上一级的ID号作为该层级菜单 不会继续往下分层
3、自动识别该菜单(分类目录)的URL的输出 如果设定在nav_url自定义字段加URL 则给A标签赋予新的URL 如果没加则默认读取该字段的默认URL

思路1:识别URL是否自定义 自定义自定义显示 没自定义的自动显示URL
<?php
// $mylink = $wpdb->get_row(“SELECT * FROM wp_termsmeta where meta_key=’nav_url'”, ARRAY_A);
//$mylink对象的属性即SQL查询结果的行名称(即$wpdb->links表中的所有行)。
//var_dump($mylink);
// echo $mylink->meta_value; // prints “10”
$sql=”SELECT terms_id FROM wp_termsmeta where meta_key=’nav_url'”;
$res=mysql_query($sql);
$arr=array();
while($mylink=mysql_fetch_row($res)){
foreach($mylink as $key=>$val){
echo $val.$count;
$arr[]=$val;
echo “<br />”;
} }
mysql_free_result($res);

echo “<br />”;echo “<br />”;echo “<br />”;
var_dump($arr);
global $wp_query;
$cat_ID = get_query_var(‘cat’);
//echo $cat_ID;
?>
<ul><?php
//判断ID输出分类目录
$categories=get_categories(“hide_empty=0&title_li=&parent=”.$cat_ID);

foreach($categories as $category) {
//当前ID
$ziid=$category->term_id;
//识别数据库倒出的数据到数组
$shibie=0;
for($k=0;$k<count($arr);$k++){
//判断该ID是否是有自定义链接 有给shibie赋值1 反之0
if($ziid == $arr[$k]){
$shibie=1;
}

}echo ‘<br >’;
echo $ziid.’-‘.$shibie;

//判断shibie的结果 如果为1则证明写了超链接需要显示超链接 如果没有则显示默认
if($shibie == 0){
echo ‘<br >’;echo ‘<li><a name=”sideli” href=”‘.get_category_link( $category->term_id ).'”>’.$category->name.

‘</a></li>’;

}else{
//返回0 自定义链接
if ( is_category() ) {
if (function_exists(‘get_terms_meta’)) {
$metaValue = get_terms_meta($ziid, ‘nav_url’);
}
}

echo ‘<br >’;echo ‘<li><a name=”sideli” href=”‘.$metaValue[0].'”>’.$category->name.

‘</a></li>’;

}

/*if($val = $ziid){
echo ‘<li><a name=”sideli” href=”‘.get_category_link( $category->term_id ).'”>’.$category->name.

‘</a></li>’;

}else{

echo ‘<li><a name=”sideli” href=”‘.get_category_link( $category->term_id ).'”>’.$category->name.

‘</a></li>’; */

//判断

}

?>

</ul>

思路2: 如果到头了 菜单识别的内容还要为该级上一级的菜单内容 那么我们就自定一下显示哪个ID下的所有子菜单 设定了自行设定 没设定的自动显示

<div class=”sidenav”>

<ul>
<?php
//菜单的输出 下面2个php
global $wp_query;
$cat_ID = get_query_var(‘cat’);
?>
<ul><?php

//判断使用其他ID的菜单
if ( is_category() ) {
if (function_exists(‘get_terms_meta’)) {
$metaValue = get_terms_meta(get_query_var(‘cat’), ‘use_nav’);
}
}
//菜单ID判断
if($metaValue[0] == null){
$categories=get_categories(“hide_empty=0&title_li=&parent=”.$cat_ID); }else{

$categories=get_categories(“hide_empty=0&title_li=&parent=”.$metaValue[0]);

}

//菜单开始
$k=11;
$imgurl= get_option(‘home’);
foreach($categories as $category) {
$k–;

//
echo ‘<li><a style=”background:url(‘.$imgurl.’/wp-content/themes/sage/images/group/bgrayop/bgrayop’.$k.’.png) repeat scroll;” name=”sideli” href=”‘.get_category_link( $category->term_id ).'”>’.$category->name.

‘</a></li>’;
}

?>

</ul>
</div>

经过思路1、2的整合发挥强大的功能
1、首页要安装wp-category-meta插件让分类目录可以自定义字段
2、使用插件建两个分类目录字段

use_nav text category
nav_url text category

3、将代码整合到你的代码里

该代码实现了如下功能
1、用分类目录当多级菜单 级别当然没有限制啦 你要是过火弄一百级都能完全掌控
2、自动识别是否达到了最后一个层级 达到了 自行设定use_nav 设置上一级的ID号即可 读取上一级的ID号作为该层级菜单 不会继续往下分层
3、自动识别该菜单(分类目录)的URL的输出 如果设定在nav_url自定义字段加URL 则给A标签赋予新的URL 如果没加则默认读取该字段的默认URL

<div class=”sidenav”>

<ul>
<?php
$sql=”SELECT terms_id FROM wp_termsmeta where meta_key=’nav_url'”;
$res=mysql_query($sql);
$arr=array();
while($mylink=mysql_fetch_row($res)){
foreach($mylink as $key=>$val){

$arr[]=$val;

} }
mysql_free_result($res);

global $wp_query;
$cat_ID = get_query_var(‘cat’);
//菜单的输出 下面2个php
global $wp_query;
$cat_ID = get_query_var(‘cat’);
?>

<ul><?php

//判断使用其他ID的菜单
if ( is_category() ) {
if (function_exists(‘get_terms_meta’)) {
$metaValue = get_terms_meta(get_query_var(‘cat’), ‘use_nav’);
}
}
//菜单ID判断
if($metaValue[0] == null){
$categories=get_categories(“hide_empty=0&title_li=&parent=”.$cat_ID); }else{

$categories=get_categories(“hide_empty=0&title_li=&parent=”.$metaValue[0]);

}

//菜单开始
$kimg=11;
$imgurl= get_option(‘home’);
//菜单循环
foreach($categories as $category) {
//K–是在循环那个opacity
–$kimg;

//当前ID
$ziid=$category->term_id;
//识别数据库倒出的数据到数组
$shibie=0;
for($k=0;$k<count($arr);$k++){
//判断该ID是否是有自定义链接 有给shibie赋值1 反之0
if($ziid == $arr[$k]){
$shibie=1;
}

}
// 输出测试 echo $ziid.’-‘.$shibie.’-‘.$kimg;
//

//判断shibie的结果 如果为1则证明写了超链接需要显示超链接 如果没有则显示默认
if($shibie == 0){
echo ‘<li><a style=”background:url(‘.$imgurl.’/wp-content/themes/sage/images/group/bgrayop/bgrayop’.$kimg.’.png) repeat scroll;” name=”sideli” href=”‘.get_category_link( $category->term_id ).'”>’.$category->name.

‘</a></li>’;

}else{
//返回0 自定义链接
if ( is_category() ) {
if (function_exists(‘get_terms_meta’)) {
$metaValue = get_terms_meta($ziid, ‘nav_url’);
}
}

echo ‘<li><a style=”background:url(‘.$imgurl.’/wp-content/themes/sage/images/group/bgrayop/bgrayop’.$kimg.’.png) repeat scroll;” name=”sideli” href=”‘.$metaValue[0].'”>’.$category->name.

‘</a></li>’;

}

}

?>

</ul>
</div>

发表回复