PHP Komme bei der API nicht weiter - WP All Import

FrazeColder

Lt. Commander
Registriert
Okt. 2013
Beiträge
1.718
Moin zusammen,

ich bin derzeit dabei einen Code für mein Vorhaben in WordPress zu schreiben. Ich nutzte das Plugin WP All Import, welches für mich aus XML und CSV Dateien verschiedene Produkte importiert. Das funktioniert auch alles soweit.
Allerdings habe ich ein Problem dabei.

Und zwar möchte ich gerne für ein Produkt mehrere Preise und mehrere Links anzeigen lassen (Preisvergleich).
Das funktioniert auch mit dem Plugin, nur unterstützt das Import Plugin das nicht.

Also muss ich mir einen Code schreiben, der beim Import mit dem Plugin nicht einfach die Werte setzte, was so eigentlich funktioniert, sondern welches sich erst die aktuellen Werte holt und dann mit den neuen Werte zusammen mergt.
Das ganze funktioniert deshalb, da das mit Advanced Custome Fields und einem Repeater umgesetzt ist.
Der Repeater ist genau dafür ausgelegt. Aber genau da liegt nun mein Problem.

Ich weiß, wie ich die Daten aus dem jetzigen Produkt herausbekomme. Nämlich so:
Code:
add_filter( 'pmxi_acf_custom_field', 'wp_all_import_pmxi_acf_custom_field', 10, 3 );

function wp_all_import_pmxi_acf_custom_field($field_value, $pid, $field_name) {

	// Getting amounts of repeats
	$counter = 1;
	while(have_rows(product_shop)){
		$counter =+ $counter;
	}

	$values = array();

	// Getting values for each reapeat
	for($i = 0; $i < $counter; $i++){
		$reapeater_value = array();

		$price = get_post_meta(get_the_ID(), '_price', true);
		$old_price = get_post_meta(get_the_ID(), '_old_price', true);
		$currency = get_post_meta(get_the_ID(), '_currency', true);
		$shop = get_post_meta(get_the_ID(), '_shop', true);
		$link = get_post_meta(get_the_ID(), '_link', true);

		$reapeater_value[0] = "_price =>". $price;
		$reapeater_value[1] = "_old_price =>". $old_price;
		$reapeater_value[2] = "_currency =>". $currency;
		$reapeater_value[3] = "_shop =>". $shop;
		$reapeater_value[4] = "_link =>". $link;
		$values[$j] = $reapeater_value;

	}

    return $values;

Nur weiß ich nicht, wie ich die Daten da dann mit dem WP All Import wieder importiere. Ich habe bereits mit dem Support geschrieben. Die haben mir diese API geschickt und den Anfang vom Code. Der sieht wie folgt aus:
(Die Funktion "wp_all_import_pmxi_acf_custom_field" habe ich ja schon modifiziert. Siehe den oberen Code)

Code:
add_filter( 'pmxi_acf_custom_field', 'wp_all_import_pmxi_acf_custom_field', 10, 3 );

function wp_all_import_pmxi_acf_custom_field( $field_value, $pid, $field_name ) {
    if ( $field_name == 'some_repeater' ) {
        // get existing value
        $existing_value = get_post_meta($pid, $field_name, true);
        // save existing value in transients to retrieve it in pmxi_saved_post action
    }
    return $field_value;
}

add_action('pmxi_saved_post', 'wpallimport_saved_post', 10, 3);
function wpallimport_saved_post($pid, $xml_object, $is_update)
{    
    // get just imported repeater value
    $new_value = get_post_meta($pid, 'some_repeater', true);     
    // retrieve previous value from transient and the merge it with new value
}

Habt ihr eine Idee, ich habe mir die API schon angeschaut, wie genau ich die Dateien wieder einfüge in das Produkt?

PS: Wenn ich die API und den Code, welchen die mir vorgegeben haben, richtig verstanden habe, dann muss ich alle Werte aus einem Produkt mit einmal aus dem Produkt rausholen und dann alle wieder mit einmal rein. Oder?
Oder muss ich das pro Wert, pro Repeater machen?

MfG und Vielen Dank! :)
 

Ähnliche Themen

Zurück
Oben