Tovább a tartalomhoz

Régi felhasználói azonosítók megtartása

Hogyan tarthatod meg a felhasználók régi azonosítóját importáláskor egyedi kóddal, és mi a teendő, ha ez nem sikerül.

Importáláskor minden felhasználó új azonosítót kap. Ha az importfájl tartalmazza a régi azonosítót, és meg akarod tartani, egyedi PHP-kódra van szükség, amely a WP All Import API-ját használja.

Fontos: ez csak kísérlet. Ha a kért azonosítót az új webhelyen már másik felhasználó használja, a kód nem csinál semmit, és az importált felhasználó új azonosítót kap.

  1. Az All Import → Beállítások oldalon, a Függvényszerkesztő részben hozd létre az alábbi PHP-függvényt.
  2. Hozz létre egy szokásos felhasználóimportot, lásd WordPress-felhasználók importálása: új import, mezők hozzárendelése, importbeállítások, futtatás. Az importfájlnak tartalmaznia kell a régi azonosítót is.
  3. Futtasd le az importot.
function my_set_user_id( $post_id, $xml_node, $is_update ) {
global $wpdb;
// Az import azonosítója.
$import_id = wp_all_import_get_import_id();
// Csak az 1-es azonosítójú importnál fut, és csak a felhasználó első létrehozásakor.
if ( $import_id == '1' && !$is_update) {
// Az XML-elem tömbbé alakítása a könnyebb használathoz.
$record = json_decode( json_encode( ( array ) $xml_node ), 1 );
// A beállítandó azonosító: a 'userid' helyére a fájlban szereplő elem neve kerüljön.
$requested_id = $record['userid'];
// Megnézi, hogy a kért azonosító foglalt-e.
$id_exists = $wpdb->get_var($wpdb->prepare('SELECT user_login FROM '.$wpdb->users.' WHERE ID = '.$requested_id));
// Ha az azonosító szabad...
if( $id_exists === null ){
// ...átírja a felhasználó azonosítóját...
$wpdb->update($wpdb->users, ['ID'=> $requested_id], ['ID' => $post_id]);
// ...átírja a hozzá tartozó metaadatok azonosítóját, hogy ne vesszen el a kapcsolat...
$wpdb->update($wpdb->usermeta, ['user_id'=> $requested_id], ['user_id' => $post_id]);
// ...és a pmxi_posts táblában is, hogy az import továbbra is kezelni tudja a felhasználót.
$wpdb->update($wpdb->prefix . 'pmxi_posts', ['post_id'=> $requested_id], ['post_id' => $post_id, 'import_id' => $import_id]);
}
}
}
add_action( 'pmxi_saved_post', 'my_set_user_id', 10, 3 );

A kódban két helyet kell az importodhoz igazítanod:

  • Az $import_id == '1' feltételben az 1 helyére a saját importod azonosítója kerüljön.
  • A $record['userid'] kifejezésben a userid legyen a régi azonosítót tartalmazó fájlelem valódi neve.

Mit tehetek, ha nem tudom megtartani a régi azonosítókat, és más adatok még a régi azonosítókra hivatkoznak? Előbb importáld a felhasználókat, hogy megkapják az új azonosítójukat. A többi adat összekapcsolása attól függ, milyen típusú az adat. Bizonyos esetekben a bővítmény a felhasználót más mező alapján is képes megtalálni, például névből vagy e-mail-címből. Ha nem, egyedi kóddal kell megkeresned az új azonosítót, és beírnod a bejövő adatba.

Megtarthatom más adatok régi azonosítóját is? Igen: a termékek, a bejegyzések, a kategóriák és más taxonómiai kifejezések, valamint a hozzászólások azonosítója is megtartható hasonló egyedi kóddal.

Készült:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások