使用WordPress插件WPML 我在保存草稿时遇到以下错误:
PHP Fatal error: Cannot use object of type WP_Error as array in /home/user/domain.com/wp-content/plugins/sitepress-multilingual-cms/inc/taxonomy-term-translation/wpml-term-translations.class.php on line 1018
在那条线上我有
$new_term = wp_insert_term( $term_name, $taxonomy, array( \'slug\' => self::term_unique_slug( sanitize_title( $term_name ), $taxonomy, $post_lang ) ) );
if ( isset( $new_term[ \'term_taxonomy_id\' ] ) ) {
$ttid_in_correct_lang = $new_term[ \'term_taxonomy_id\' ];
$trid = false;
if ( $bulk ) {
$trid = $sitepress->get_element_trid( $ttid, \'tax_\' . $taxonomy );
}
$sitepress->set_element_language_details( $ttid_in_correct_lang, \'tax_\' . $taxonomy, $trid, $post_lang );
}
}
在另一个
thread 我读到了一个类似的问题,但与插件试图以数组的形式访问对象的情况不同。你知道我该怎么解决这个问题吗?
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
很明显,为什么会出现这个问题。
让我们看看wp_insert_term
文件:
Return Values
(array | WP\\u Error)术语ID和术语分类ID。(示例:array(\'Term\\u ID\'=>12,\'Term\\u Taxonomy\\u ID\'=>34))
如您所见,如果成功,此函数将返回数组。但是如果发生任何错误,它将返回WP\\U错误类型的对象。
所以发生此致命错误的原因是wp_insert_term
以错误结束,其余代码无法正确处理。
解决此问题的简单方法是在if语句中添加另一个条件,如下所示:
$new_term = wp_insert_term( $term_name, $taxonomy, array( \'slug\' => self::term_unique_slug( sanitize_title( $term_name ), $taxonomy, $post_lang ) ) );
if ( !is_wp_error($new_term) && isset( $new_term[ \'term_taxonomy_id\' ] ) ) {
...
但这并不能解决真正的问题,即
wp_insert_term
呼叫