J'ai un formulaire de contact 7 sur le front-end qui crée un nouveau poste personnalisé à chaque fois qu'il est rempli. Tout fonctionne bien, mais je ne comprends pas comment définir la langue de ce message (actuellement, il est enregistré en anglais car il s'agit de ma langue par défaut dans WPML).
Voici ce que j'ai essayé:
function save_form_to_post( $posted_data ) {
$args = array(
'post_type' => 'projects',
'post_status'=> 'draft',
'post_title'=> wp_strip_all_tags( $posted_data['title'] ),
'post_content'=> wp_strip_all_tags( $posted_data['pitch'] ),
);
$post_id = wp_insert_post($args);
if( $posted_data['language'] == 'Spanish' || $posted_data['language'] == 'German' || $posted_data['language'] == 'French' ) {
if( $posted_data['language'] == 'Spanish' ) {
$set_language_args = array(
'element_id' => $post_id,
'element_type' => 'projects',
'language_code' => 'es'
);
$cat_ID = 729;
} elseif( $posted_data['language'] == 'German' ) {
$set_language_args = array(
'element_id' => $post_id,
'element_type' => 'projects',
'language_code' => 'de'
);
$cat_id = 726;
} elseif( $posted_data['language'] == 'French' ) {
$set_language_args = array(
'element_id' => $post_id,
'element_type' => 'projects',
'language_code' => 'fr'
);
$cat_id = 725;
}
do_action( 'wpml_set_element_language_details', $set_language_args );
} else {
$cat_id = 723;
}
wp_set_object_terms( $post_id, $cat_id, 'project_category' );
return $posted_data;
}
add_filter( 'wpcf7_posted_data', 'sep_save_screenplay_form' );
La langue est donc définie en fonction de la valeur d'un champ de sélection du formulaire frontal. Ensuite, j'ai essayé d'utiliser le hook wpml_set_element_language_details
pour définir une langue pour le message (chaque message n'a pas de traduction). Et enfin, j'ai défini une taxonomie pour le poste.
À l'heure actuelle, la publication enregistre uniquement en anglais et non dans d'autres langues. Quelqu'un pourrait-il m'expliquer pourquoi cela ne fonctionne pas et comment le faire fonctionner?
Merci beaucoup.
L'action wpml_set_element_language_details
_element_type
doit être associée au préfixe correct utilisé par WPML:
À partir des documents WPML
type_élément (chaîne) Type d'un élément. Il peut s'agir d'un type de message: post_post, post_page, post_attachment, post_nav_menu_item, post_ {clé de message personnalisée} ou taxonomie: taxe_catégorie, taxe_post_tag, taxe_nav_menu, taxe_ {clé de taxonomie personnalisée}. La valeur par défaut est post_post si elle n'est pas définie.
Dans votre cas, il devrait s'agir de post_projects
mais vous pouvez également utiliser wpml_element_type
pour obtenir le préfixe correct, comme ceci:
$element_type = apply_filters('wpml_element_type', 'projects');
Ressources:
https://wpml.org/wpml-hook/wpml_set_element_language_details/