Fügen Sie eine ACF-Repeater-Zeile hinzu, ohne vorhandene Daten zu überschreibenPhp

PHP-Programmierer chatten hier
Guest
 Fügen Sie eine ACF-Repeater-Zeile hinzu, ohne vorhandene Daten zu überschreiben

Post by Guest »

Ich arbeite mit WP All Import und Advanced Custom Fields (ACF). Ich brauche Hilfe, um sicherzustellen, dass beim Importieren von Daten eine neue Zeile zu einem Repeater-Feld hinzugefügt wird, ohne vorhandene Zeilen zu überschreiben.
Hier ist das spezifische Szenario:
Ich habe ein übergeordnetes Repeater-Feld namens Verkäufer mit den folgenden Unterfeldern:
Firma (Händlername)
Preis (Preis)
Link (Link)
Während des Imports muss ich Folgendes tun:
Überprüfen Sie, ob der Wert des Unternehmens mit dem eingehenden {company_name[1]} aus dem Datensatz übereinstimmt.
Wenn er bereits vorhanden ist, unternehmen Sie nichts.
Wenn er nicht vorhanden ist , fügen Sie dem Repeater-Feld eine neue Zeile mit den folgenden Werten hinzu

Code: Select all

bedrijf = {company_name[1]}
prijs = {search_price[1]}
link = {y_link[1]}
Derzeit überschreibt der Import das gesamte Repeater-Feld und entfernt vorhandene Zeilen, was ich vermeiden muss.
Ich habe versucht:

Code: Select all

add_action('pmxi_saved_post', function($post_id, $xml_data, $import_id) {
if (get_post_type($post_id) !== 'product') return;

$selector = 'sellers';
$subfield1 = 'company';
$subfield2 = 'prijs';
$subfield3 = 'link';

$merchant_name = $xml_data['company_name'][1] ?? '';
$search_price = $xml_data['search_price'][1] ?? '';
$aw_deep_link = $xml_data['company_name'][1] ?? '';

if (empty($merchant_name)) return;

$existing_rows = get_field($selector, $post_id) ?: [];
foreach ($existing_rows as $row) {
if ($row[$subfield1] === $merchant_name) return;
}

$existing_rows[] = [
$subfield1 => $company_name,
$subfield2 => $search_price,
$subfield3 => $y_link,
];
update_field($selector, $existing_rows, $post_id);
}, 10, 3);

Aber ich schaffe es nicht, es zum Laufen zu bringen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post