/ / Funktion nur ausführen, wenn bedingung - php, funktion, if-anweisung

Funktion nur ausführen, wenn Bedingung - PHP, Funktion, If-Anweisung

Ich möchte diese Funktion nur ausführen, wenn der aktuell angemeldete Benutzer der Autor des Beitrags ist

global  $user_ID;
$admin_user = get_user_by( "id", $user_ID );
$selected   = empty( $post->ID ) ? $user_ID : $post->post_author;

function return_custom_price( $post ) {
global $post;
$new_total = get_post_meta( $post->ID, "_total_egp", true);
$price = get_post_meta($post->ID, "_regular_price", true);
//$sale_price = get_post_meta($post->ID, "_sale_price", true);
$now_price = get_post_meta($post->ID, "_price", true);
$woo_usd_rate = get_post_meta( $post->ID, "_usd_rate", true);
$woo_price_usd = get_post_meta( $post->ID, "_price_usd", true);
$cog = $woo_price_usd * $woo_usd_rate;

if($user_ID == $selected ){

update_post_meta($post->ID, "_regular_price", $new_total);
update_post_meta($post->ID, "_sale_price", "");
update_post_meta($post->ID, "_price", $new_total);
update_post_meta( $post->ID, "_wc_cog_cost", $cog );

}
}

add_action("save_post", "return_custom_price");

Ich habe es versucht, aber es funktioniert nicht und es lief trotzdem

was ich versuche zu tun, ist das Wenn Benutzer mithilfe von woocommerce vom Frontend aus in WordPress posten, wird der veröffentlichte Beitrag zu WordPress im Entwurfsstatus hinzugefügt

Was passiert gerade jetzt?Wenn der Administrator auf "Veröffentlichen" geklickt hat, wird die Funktion ausgeführt und die Post-Metas aktualisiert. Ich möchte die Post-Metas nicht aktualisieren, es sei denn, der Administrator, der den Beitrag veröffentlicht, ist der aktuelle Eigentümer / Autor des Beitrags und der Administrator, der die Veröffentlichung genehmigt Der Post ist nicht der Postautor, der Post wird einfach ohne Metasupdates veröffentlicht

Antworten:

0 für die Antwort № 1

Die Lösung befand sich in der Reihenfolge, in der die Aktion aufgerufen wurde, und die save_post wird beim Aktualisieren des Beitrags trotzdem ausgeführt, ohne irgendwelche Prüfungen durchzuführen

Das kann also eine Lösung sein

function return_custom_price( $post ) {
global  $post;
$market = get_post_meta( $post->ID, "market", true);
if($market == "" ){
return;
}
$new_total = get_post_meta( $post->ID, "_total_egp", true);
$price = get_post_meta($post->ID, "_regular_price", true);
//$sale_price = get_post_meta($post->ID, "_sale_price", true);
$now_price = get_post_meta($post->ID, "_price", true);
$woo_usd_rate = get_post_meta( $post->ID, "_usd_rate", true);
$woo_price_usd = get_post_meta( $post->ID, "_price_usd", true);
$cog = $woo_price_usd * $woo_usd_rate;

update_post_meta($post->ID, "_regular_price", $new_total);
update_post_meta($post->ID, "_sale_price", "");
update_post_meta($post->ID, "_price", $new_total);
update_post_meta( $post->ID, "_wc_cog_cost", $cog );
}
add_action("save_post", "return_custom_price");