添加产品时,Woocommerce产品类别丢失(不显示)

时间:2018-08-22 11:27:05

标签: wordpress plugins woocommerce

我最近遇到了一个问题,我无法将产品分配给类别,因为添加产品时类别未显示在meta框中。这是示例:

添加新类别后,重新加载页面后似乎消失了。您会看到它显示6个项目,但未显示任何类别。这是一个示例:

3 个答案:

答案 0 :(得分:2)

OP为此帖子为我创建了Wisdom of the Ancients条帖子。

我打开调试,看到此问题中讨论的错误: How to resolve "ORDER BY clause is not in SELECT list" caused MySQL 5.7 with SELECT DISTINCT and ORDER BY。我使用的是Digital Ocean的Managed MySQL服务,无法修改全局设置或my.cnf文件。

为了我未来的自我和其他流浪者。我的问题是MySQL的'ANSI'模式包含'ONLY_FULL_GROUP_BY'。

WordPress默认在/wp-includes/wp-db.php中过滤掉'ONLY_FULL_GROUP_BY',但我的Managed SQL Server也默认设置了ANSI

我的解决方案是制作一个笨拙的WordPress小插件,以确保每次会话都将其删除。 https://fishy.getgit.co/fishy/remove-ansi-sql-mode

或者只是复制/粘贴:

<?php
/*
Plugin Name: Remove ANSI SQL_MODE
Version: 1.0
Description: Removes the 'ANSI' SQL MODE if it exists as it contains 'ONLY_FULL_GROUP_BY' since MySQL 5.7.5. See https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi
*/
class Remove_Ansi_Sql_Mode {
    static function init(){
        add_action('init', array( __CLASS__, 'strip_ansi_mode' ) );
    }

    static function strip_ansi_mode(){
        global $wpdb;
        // Copied from /wp-includes/wp-db.php
        $incompatible_modes = array(
          'NO_ZERO_DATE',
          'ONLY_FULL_GROUP_BY',
          'STRICT_TRANS_TABLES',
          'STRICT_ALL_TABLES',
          'TRADITIONAL',
          'ANSI' // Adding ANSI
        );
        $sql_modes = explode(',', $wpdb->get_col( "SELECT @@SESSION.sql_mode" )[0]);
        foreach ($sql_modes as $key => $value) {
          if(in_array($value, $incompatible_modes)){
            unset($sql_modes[$key]);
          }
        }
        $wpdb->set_sql_mode($sql_modes);
    }   

}
Remove_Ansi_Sql_Mode::init();

答案 1 :(得分:0)

尝试一下,它对您有用

Show Product Categories screenshot

答案 2 :(得分:0)

更新到WooCommerce 3.6之后,我遇到了同样的问题。通过停用WP Term Images插件解决了该问题。