在wp_NAV_MENU中添加‘Has-Child’类时出现问题

时间:2012-07-23 作者:Stephen Watkins

根据网上的大量参考资料,我应该能够使用以下函数添加类,has-children, 要查看包含子菜单项的菜单项,请执行以下操作:

function gtp_nav_menu_css_class( $css_class, $item ) {
    global $wpdb;
    $has_children = $wpdb->get_var("SELECT COUNT(meta_id) FROM wp_postmeta WHERE meta_key=\'_menu_item_menu_item_parent\' AND meta_value=\'" . $item->ID . "\'");
    if ($has_children > 0) {
        array_push($css_class, \'has-children\');
    }
    return $css_class;
}
add_filter( \'nav_menu_css_class\', \'gtp_nav_menu_css_class\', 10, 4 );
我正在使用wp_nav_menu() 在我的header.php. 但是,在将此代码添加到functions.php, 我没有看到has-children 类被添加到任何菜单项(实际上存在包含子菜单项的菜单项)。有人知道罪魁祸首是什么吗?

备注:

我正在使用WP 3.4.1

  • 我正在运行一个多站点设置,表前缀为“wp\\uu”,通过debug echo语句,我可以看到函数正在执行,但不在条件语句中
  • 1 个回复
    最合适的回答,由SO网友:Milo 整理而成

    您不能将表名硬编码到查询中,尤其是在使用多站点时。交换$wpdb->postmeta 对于wp_postmeta 这很可能会奏效。

    编辑-从技术上讲,您可以进行编辑,以清晰明了。

    结束

    相关推荐

    $wpdb与WP_QUERY有什么不同?

    我将编写一个函数来返回特定类别中的下一篇/上一篇文章。谁能告诉我在使用中会有什么不同吗$wpdb 而不是WP_Query(); eg公司new WP_Query(args)? 什么决定了应该使用哪一个?干杯,格雷戈里