Product-attribute-slug-is-too-long-28-characters-max

时间:2019-08-28 作者:thijs thijs

谷歌没有解决我的问题,所以。。

这里的任何人都知道如何增加woocommerce产品属性slug的字符限制,默认情况下它的字符限制为28个(数据库中最多32个),我需要最多40个。(试图增加到最大128)。

我正在测试一个本地站点,其中产品信息来自导入的xml文件,有时某些属性名称的长度刚刚超过28个字符。。

将数据库中的相应列从vachar(32)更改为varchar(128),

试图更改中的值wc-attribute-functions.php, 将28改为128,但这没有帮助。。

// Validate slug.
if ( strlen( $slug ) >= 40 ) {
    /* translators: %s: attribute slug */
    return new WP_Error( ‘invalid_product_attribute_slug_too_long’, sprintf( __( ‘Slug “%s” is too long (40 characters max). Shorten it, please.’, ‘woocommerce’ ), $slug ), array( ‘status’ => 400 ) );
….
现在我可以输入更长的属性,但在保存时仍然会出错。。

screen

这是我在尝试将术语添加到测试属性(名称较长)时遇到的错误

enter image description here

在这里,您可以看到我可以创建一个包含38个字符的属性,但是当我在"products_term_taxonomy" 表,它不显示在那里,

enter image description here

将文件分类法中的32个字符限制更改为128个字符后。php,现在我可以将术语添加到属性。

enter image description here

现在也可以在数据库中看到,

enter image description here

3 个回复
SO网友:yxl

有一个解决方案。

手动在“产品属性”页面中创建长名称属性,然后use a short slug name here. 在product importsection中,列标题中没有“attribute slug”(或者可能有一个,但WooCommerce默认不使用)。

就像这样

enter image description here

<然后您现在可以从CSV文件导入。无需更改任何代码像这样enter image description here

enter image description here

希望这对你有帮助。

SO网友:Rup

正如评论中所讨论的,问题是这些slug还被用作分类名称,WordPress core中的分类名称有32个字符的限制。从…起register_taxonomy():

if ( empty( $taxonomy ) || strlen( $taxonomy ) > 32 ) {
    _doing_it_wrong( __FUNCTION__,
        __( \'Taxonomy names must be between 1 and 32 characters in length.\' ), \'4.2.0\' );
    return new WP_Error( \'taxonomy_length_invalid\',
        __( \'Taxonomy names must be between 1 and 32 characters in length.\' ) );
}
我们无法在不修补核心的情况下突破这一限制。

SO网友:Enshtein

为什么需要长属性段塞?需要更长的属性名称?

可以这样解决:

add_filter( \'sanitize_taxonomy_name\', function( $urldecode, $taxonomy ) {
    $urldecode = mb_substr($urldecode, 0, 26, \'utf-8\');
    return $urldecode;
}, 10, 2 );
WooCommerce将能够从管理面板中保存具有长名称(超过28个字符)的属性,等等!

相关推荐