【发布时间】:2014-08-09 10:22:10
【问题描述】:
我正在使用已定义 3 级类别的 WooCommerce。
一切正常,产品类别页面和新产品创建页面中的类别和子类别列表结构良好,除了菜单编辑页面。
我有所有的类别和子类别,但没有它们的原始结构(其中一些保留了它们的结构,但所有其他的都对齐到一个级别),所以当将它们添加到菜单时,我将无法分辨哪个子类别属于哪个类别。
有没有办法刷新或重新映射整个结构?
【问题讨论】:
我正在使用已定义 3 级类别的 WooCommerce。
一切正常,产品类别页面和新产品创建页面中的类别和子类别列表结构良好,除了菜单编辑页面。
我有所有的类别和子类别,但没有它们的原始结构(其中一些保留了它们的结构,但所有其他的都对齐到一个级别),所以当将它们添加到菜单时,我将无法分辨哪个子类别属于哪个类别。
有没有办法刷新或重新映射整个结构?
【问题讨论】:
首先您需要在 WordPress 管理菜单中创建一个菜单,空白菜单。现在转到function.php文件(主题文件)中添加以下代码。
你可以通过这个函数获取产品类别列表:
function get_product_terms( $term_id ) {
$html = '';
$args = array( 'hide_empty' => 0, 'parent' => $term_id );
$terms = get_terms('product_cat', $args);
foreach ($terms as $term) {
$html .= '<li';
if( $term_id == 0 ) {
$html .= ' class="top_li"';
}
$html .= '><a href="'.get_term_link($term->slug, 'product_cat').'">' . $term->name . '</a>';
if( $list = get_product_terms( $term->term_id )) {
$html .= '<ul class="second_level">'.$list.'</ul>';
}
$html .= '</li>';
}
return $html;
}
您可以使用此功能将产品类别添加到菜单中:
// Filter wp_nav_menu() to add additional links and other output
function new_nav_menu_items($items) {
// Woo function
/*//product_cat
$terms = get_terms( 'product_cat', $args );
print_r($terms);*/
if( $list = get_product_terms( 0 )) {
$menu1link = '<li class="home"><a href="' . home_url( '/' ) . '">' . __($list) . '</a></li>';
$homelink = '<li class="home"><a href="' . home_url( '/' ) . '">' . __('Home') . '</a></li>';
// add the home link to the end of the menu
$items = $items . $homelink;
$items = $items .$menu1link;
}
return $items;
}
add_filter( 'wp_nav_menu_items', 'new_nav_menu_items' );
【讨论】:
Wordpress 不允许菜单从另一个组件继承结构。
菜单应该有一个独立的、独立的结构,并且不应该知道你的类别结构。
所以答案是否定的,你必须自己做。您可以构建一个包含每个添加到菜单的类别的脚本,最终得到相同的结构,但我不建议这样做。因为出错的可能性很大。
【讨论】: