转换为ACF关系字段

时间:2014-02-05 作者:Malibur

我正在建立一个WordPress网站,该网站的后端应该是丹麦文。这对于核心WordPress来说很好,但是一些插件使得很难进行完整的翻译。

我刚刚发现的一个问题与ACF插件中的关系字段有关。我喜欢这个插件,但这里似乎有一个来自开发人员方面的错误呼吁。也许我错过了什么。问题是post_type 此处描述:

Relationshipfield

所以问题是它在哪里说“生产”。这是一个自定义的帖子类型,我用一个丹麦标签“Forestilling”和CPT UI设置了它。

但当我研究这一关系领域背后的代码时,它似乎在拉动post_type 而不是标签:

// right aligned info
$title = \'<span class="relationship-item-info">\';

if( in_array(\'post_type\', $field[\'result_elements\']) )
{
    $title .= get_post_type();
}

// WPML
if( $options[\'lang\'] )
{
    $title .= \' (\' . $options[\'lang\'] . \')\';
}

$title .= \'</span>\';
我假设他们对WPML部分采取了预防措施。但是我没有使用WPML,也不知道是否仅仅为了更改翻译就需要这样做。

我所要做的就是交换get_post_type 与此一致:

$title .= get_post_type_object( get_post_type( $post ) );
但这意味着要破解插件,而这将在我更新插件时被覆盖。

我怎样才能着手解决这个问题?

2 个回复
SO网友:Andrea Sciamanna

您应该将帖子类型名称(以及可能需要翻译的所有其他内容)保留为英语。

然后,在WPML中,您可以翻译它的名称(标签和slug)。

如果站点的主要语言是丹麦语,您只需将该语言设置为默认语言(但不适用于WPML字符串翻译,我将保留英语作为默认语言)。

如果使用WPML的原因只是为了提供一个丹麦语后端,但网站不应该是多语言的,那么可以通过启用第二语言(如英语)并将其标记为隐藏来实现。

不过,最好还是将所有字符串都保留为英语(gettext、自定义post类型标签和slug都是字符串)。

SO网友:Matias Vad

只需更改Post Type 以“植树造林”代替“生产”。

我知道在代码中使用丹麦语很糟糕,但在这种情况下似乎是必要的。

插件正在拉动Post Type, 这是正确的做法,因为您可以随意更改标签,而不会影响代码/插件,但是Post Type 是静态的,用于代码、数据库、调用等,因此也用于Relationship Field (正确)asPost Type.

结束

相关推荐

Plugins_url函数混合了系统路径和URL

在我的WordPress小部件中,我使用以下代码:wp_register_script(\'jquery-ui.widget\', plugins_url(\'assets/js/jquery-ui-1.9.2.widget.js\', dirname( __FILE__ ))); 不幸的是,代码给了我一个无效的URL,它与我的系统路径混合在一起:http://test.dev/wp-content/plugins/C:/projects/wordpress/plugins/assets/js/

转换为ACF关系字段 - 小码农CODE - 行之有效找到问题解决它

转换为ACF关系字段

时间:2014-02-05 作者:Malibur

我正在建立一个WordPress网站,该网站的后端应该是丹麦文。这对于核心WordPress来说很好,但是一些插件使得很难进行完整的翻译。

我刚刚发现的一个问题与ACF插件中的关系字段有关。我喜欢这个插件,但这里似乎有一个来自开发人员方面的错误呼吁。也许我错过了什么。问题是post_type 此处描述:

Relationshipfield

所以问题是它在哪里说“生产”。这是一个自定义的帖子类型,我用一个丹麦标签“Forestilling”和CPT UI设置了它。

但当我研究这一关系领域背后的代码时,它似乎在拉动post_type 而不是标签:

// right aligned info
$title = \'<span class="relationship-item-info">\';

if( in_array(\'post_type\', $field[\'result_elements\']) )
{
    $title .= get_post_type();
}

// WPML
if( $options[\'lang\'] )
{
    $title .= \' (\' . $options[\'lang\'] . \')\';
}

$title .= \'</span>\';
我假设他们对WPML部分采取了预防措施。但是我没有使用WPML,也不知道是否仅仅为了更改翻译就需要这样做。

我所要做的就是交换get_post_type 与此一致:

$title .= get_post_type_object( get_post_type( $post ) );
但这意味着要破解插件,而这将在我更新插件时被覆盖。

我怎样才能着手解决这个问题?

2 个回复
SO网友:Andrea Sciamanna

您应该将帖子类型名称(以及可能需要翻译的所有其他内容)保留为英语。

然后,在WPML中,您可以翻译它的名称(标签和slug)。

如果站点的主要语言是丹麦语,您只需将该语言设置为默认语言(但不适用于WPML字符串翻译,我将保留英语作为默认语言)。

如果使用WPML的原因只是为了提供一个丹麦语后端,但网站不应该是多语言的,那么可以通过启用第二语言(如英语)并将其标记为隐藏来实现。

不过,最好还是将所有字符串都保留为英语(gettext、自定义post类型标签和slug都是字符串)。

SO网友:Matias Vad

只需更改Post Type 以“植树造林”代替“生产”。

我知道在代码中使用丹麦语很糟糕,但在这种情况下似乎是必要的。

插件正在拉动Post Type, 这是正确的做法,因为您可以随意更改标签,而不会影响代码/插件,但是Post Type 是静态的,用于代码、数据库、调用等,因此也用于Relationship Field (正确)asPost Type.