Un utilisateur a demandé 👇

Bonjour, je dois interdire l’importation de toutes les lignes avec des dates non pertinentes dans le champ {date} dans la règle “{date}” >= Aujourd’hui. Ou comment exclure l’import des lignes CSV qui ne respectent pas cette règle ? Quelle est la meilleure façon de faire de xPath la première étape ou la fonction PHP ? Pouvez-vous montrer un exemple de ce code php comment le faire? S’il te plait, aide-moi)

Merci!

Ce sujet a été modifié il y a 2 ans et 4 mois par.


(@wpallimport)

il y a 2 ans, 4 mois

Bonjour @alexnn

Malheureusement, il n’est pas possible de filtrer par date dans la section des options de filtrage de l’import. Au lieu de cela, vous devrez utiliser le lien “wp_all_import_is_post_to_create”: https://github.com/soflyy/wp-all-import-action-reference/blob/master/all-import/wp_all_import_is_post_to_create.php.

Voici un exemple de collection que vous pouvez ajuster selon vos besoins :

function my_is_post_to_create( $continue_import, $data, $import_id ) {
    if ( $import_id == 18 ) { // Change this to your actual import ID.
		if ( strtotime( $data['date'] ) >= strtotime( "Today" ) ) {
			return false;
		} else {
			return true;
		}
	}
    return true;
}
add_filter('wp_all_import_is_post_to_create', 'my_is_post_to_create', 10, 3);


(@alexnn)

il y a 2 ans, 4 mois

Salut! Merci pour un tel soutien ! J’essaie d’abord de préparer une date à partir de la chaîne. j’essaie ce code

$desc="{string[1]}";
$data = preg_replace("/(.*?)((d{1,2})-(d{1,2})-(d{4}))/i", "$5-$4-$3", $desc);
$data = strtotime( $data );
function my_is_post_to_create( $continue_import, $data, $import_id ) {
    if ( $import_id == 8 ) { // Change this to your actual import ID.
		if ( $data >= strtotime( "Today" ) ) {
			return false;
		} else {
			return true;
		}
	}
    return true;
}

add_filter('wp_all_import_is_post_to_create', 'my_is_post_to_create', 10, 3);

mais tous les enregistrements sont ignorés… PASSER : via le filtre wp_all_import_is_post_to_create…. Qu’est-ce qui ne va pas ?


(@wpallimport)

il y a 2 ans, 4 mois

Bonjour @alexnn

Vous devrez toucher la date à l’intérieur du tableau $data dans la fonction my_is_post_to_create. En supposant que la date se trouve dans l’élément d’importation {string[1]}, quelque chose comme ceci devrait fonctionner :

function my_is_post_to_create( $continue_import, $data, $import_id ) {
    $date = preg_replace("/(.*?)((d{1,2})-(d{1,2})-(d{4}))/i", "$5-$4-$3", $data['string']);
    $date = strtotime( $date );
    if ( $import_id == 8 ) { // Change this to your actual import ID.
		if ( $date >= strtotime( "Today" ) ) {
			return false;
		} else {
			return true;
		}
	}
    return true;
}

add_filter('wp_all_import_is_post_to_create', 'my_is_post_to_create', 10, 3);


(@alexnn)

il y a 2 ans, 4 mois

Salut! Malheureusement, ce code ne fonctionne pas. mon {fil[1]} contient “mots blabla et date (format dmY)”. Quel format de date la fonction $data comprend-elle ? $ détails[‘format???’]


(@wpallimport)

il y a 2 ans, 4 mois

Bonjour @alexnn

La variable $data est un tableau d’éléments d’importation et de leurs valeurs, elle ne reconnaît ni ne modifie les formats de date. Vous devez supprimer la date de la modification $data, puis l’analyser.

Veuillez noter que le code que nous avons fourni n’est qu’un exemple de code ; vous devrez l’ajuster pour qu’il fonctionne avec vos données. Malheureusement, nous ne pouvons pas écrire de code personnalisé pour votre projet.

Cela a-t-il résolu votre problème ?

Was this helpful?

0 / 0

Leave a Reply 0

Your email address will not be published. Required fields are marked *