do_action( 'wpml_set_element_language_details', array $args )
- Tipo
- action
- Categoria
- Inserir conteúdo
- Versão do WPML
- 3.2.7
Descrição
O hook de ação permite definir ou atualizar as informações de idioma de um elemento. Além de seu uso implícito direto, o hook pode ser útil quando você precisar conectar dois elementos com um como a “Tradução de” outro. Consulte a seção “Exemplo de uso do hook” abaixo para ver um exemplo disso.
Argumentos
- $args
- (array) (Obrigatório) Um array de argumentos a serem usados.
- element_id(bool) Use term_taxonomy_id para taxonomias, post_id para posts
- element_type(string) O tipo de um elemento. Pode ser um tipo de post: post_post, post_page, post_attachment, post_nav_menu_item, post_{custom post key} ou taxonomia: tax_category, tax_post_tag, tax_nav_menu, tax_{custom taxonomy key}. O padrão é
post_postse não for definido. - trid(int) O trid ao qual o elemento será atribuído. Se definido como
FALSE, criará um novo trid para o elemento, fazendo com que quaisquer possíveis relações de tradução de/para ele desapareçam. - language_code(string) O código de idioma para o elemento
- source_language_code(string) O código do idioma de origem para o elemento.
NULLé reservado para elementos originais, ou seja, elementos que não são uma tradução de outro. O padrão éNULLquando não for definido. - check_duplicates(bool) O padrão é
TRUE.. O que isso faz é verificar se já existe outro elemento de um tipo diferente com o mesmo ID e emite um aviso de nível de usuário (E_USER_NOTICE) com a mensagem “Element ID already exists with a different type”
Exemplo de uso
No exemplo abaixo, usamos a função
my_insert_posts() para inserir dois posts a partir do front-end. Um original e uma tradução.
Essa função é chamada em element_connect_on_insert(). Essa é a nossa função principal, que conectará os dois posts. Observe o uso de dois outros hooks úteis do WPML internamente. O filtro wpml_element_type para filtrar o tipo de elemento para um valor que o WPML entenda e o filtro wpml_element_language_details para recuperar o trid original e o código de idioma. Tudo isso é associado ao wp_footer para que nossos filtros e ações sejam executados quando o rodapé for carregado no front-end.
Exemplo
add_action('wp_footer', 'element_connect_on_insert');
function my_insert_posts() {
$output = array();
// Create original post object
$my_original_post = array(
'post_title' => 'My original post',
'post_content' => 'This is my original post.',
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(1)
);
// Create translation post object
$my_translated_post = array(
'post_title' => 'My translated post',
'post_content' => 'This is my translated post.',
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(2) // NOTE: this is the translated category id!
);
// Insert the 2 posts into the database
$original_post_id = wp_insert_post( $my_original_post );
$translated_post_id = wp_insert_post( $my_translated_post );
return $output = array(
'original' => $original_post_id,
'translation' => $translated_post_id
);
}
function element_connect_on_insert() {
$inserted_post_ids = my_insert_posts();
if ( $inserted_post_ids) {
// https://wpml.org/wpml-hook/wpml_element_type/
$wpml_element_type = apply_filters( 'wpml_element_type', 'post' );
// get the language info of the original post
// https://wpml.org/wpml-hook/wpml_element_language_details/
$get_language_args = array('element_id' => $inserted_post_ids['original'], 'element_type' => 'post' );
$original_post_language_info = apply_filters( 'wpml_element_language_details', null, $get_language_args );
$set_language_args = array(
'element_id' => $inserted_post_ids['translation'],
'element_type' => $wpml_element_type,
'trid' => $original_post_language_info->trid,
'language_code' => 'de',
'source_language_code' => $original_post_language_info->language_code
);
do_action( 'wpml_set_element_language_details', $set_language_args );
}
}
Hooks relacionados
wpml_make_post_duplicates, wpml_admin_make_post_duplicates, wpml_copy_post_to_language, wpml_delete_package, wpml_import_get_trid_from_imported_translations, wpml_register_string, wpml_register_single_string, wpml_show_package_language_ui, wpml_delete_package_action