2017-02-05 14 views
1

Ich habe eine Funktion geschrieben, um die Rolle eines Mitglieds als Reaktion auf eine Membermouse-Push-Benachrichtigung zu ändern. Der Code schlägt mit der Meldung "Schwerwiegender Fehler: Aufruf an undefinierte Funktion wp_update_user() ..." fehl. Dies bedeutet, dass die Funktion nicht aufgerufen wurde, aber der Ordner sich in der WP-Umgebung befindet und von einer WP-Plugin-Funktion aufgerufen wird. Obwohl es nicht ratsam ist, habe ich verschiedene Möglichkeiten ausprobiert, um die Datei user.php (in der sich wp_update_user befindet) im Code zu finden, und keiner hat funktioniert. Ich bin ratlos, weil ich glaube, dass der Code korrekt geschrieben ist, aber ich bin mir nicht einmal sicher. Die benutzerdefinierte Skriptdatei (unten) befindet sich in einem benutzerdefinierten Ordner im Stammverzeichnis.Schwerwiegender Fehler: Aufruf zu undefinierter Funktion wp_update_user()

<?php 
// Custom script to change a members role to Spectator upon cancellation 

if(!isset($_GET["event_type"])) { 
    // event type was not found, so exit 
    echo "Exit"; 
    exit; 
} else { 
    $status = $_GET["status"]; 
    if($status == 2) { 
     $eventType = $_GET["event_type"]; 
     $user_id = $_GET["member_id"]; 
     $newrole = "bbp_spectator"; 
     $user_id = wp_update_user(array( 
      'ID' => $user_id, 
      'role' => $newrole 
     )); 
     if (is_wp_error($user_id)) { 
      // There was an error, probably that user doesn't exist. 
      echo "Error"; 
     } else { 
      // Success! 
      echo "Role Changed to Spectator"; 
     } 
    } 
} 

?>

Antwort

1

https://codex.wordpress.org/Plugin_API/Action_Reference. Wenn Sie nur einen Aktionshaken hinzufügen, der ausgeführt wird, nachdem der Benutzer festgelegt wurde (init ist ein guter), dann gibt es keinen Benutzer und die Funktion existiert noch nicht.

function prefix_my_function_name() { 

    //your code 


} 
add_action('init' , 'prefix_my_function_name'); 
+0

Dies ist ein Skript, das von einem Plugin aufgerufen wird. Der Hook wird nicht verwendet, da es eine Push-Benachrichtigung gibt, die das Skript nicht als Wp-Hook aufruft. – Homeacoustics

1

Ich habe es behoben ... Ich habe den falschen Pfad für die Anforderung verwendet. Ich liebe die Hilfe im Web, aber die Vielzahl der Antworten in verschiedenen Foren zeigt so viele Möglichkeiten, Dinge zu tun. Es ist mir nie in den Sinn gekommen, es einfach zu halten. I zugegeben, um die folgenden zu dem Anfang des Codes:

require_once ("wp-includes/user.php");

Alle Kommentare von früheren Beiträgen mit ähnlichen Problemen waren verschiedene Möglichkeiten vorzuschlagen, dasselbe zu sagen, aber dies arbeitete.

Verwandte Themen