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.
A beállítás lépései
Szekció neve “A beállítás lépései”- Az All Import → Beállítások oldalon, a Függvényszerkesztő részben hozd létre az alábbi PHP-függvényt.
- 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.
- Futtasd le az importot.
A függvény
Szekció neve “A függvény”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 az1helyére a saját importod azonosítója kerüljön. - A
$record['userid']kifejezésben auseridlegyen a régi azonosítót tartalmazó fájlelem valódi neve.
Gyakori kérdések
Szekció neve “Gyakori kérdések”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: