我正在使用已定义的3级别类别的WooCommerce。
一切运作良好,类别和子类别列表在新产品创建页面的产品类别页面中结构良好,菜单编辑页面除外。
我有所有类别和子类别,但没有原始结构(其中一些保留了它们的结构,但其他所有结果都对齐到一个级别),所以当将它们添加到菜单中时,我将无法分辨哪个子类别属于哪个类别。
有没有办法刷新或重新映射完整的结构?
答案 0 :(得分:2)
首先,您需要在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' );
答案 1 :(得分:0)
Wordpress不允许菜单从其他组件继承结构。
菜单应该具有独立,独立,结构,并且不应该对您的类别结构有任何了解。
所以答案是否定的,你必须自己做。您可以构建一个脚本,其中包含菜单中每个添加的类别,最终使用相同的结构,但我不建议这样做。由于错误的可能性很大。