KeinProblem
Ensign
- Registriert
- Okt. 2013
- Beiträge
- 191
Hi,
Ich habe ein kleines Wordpress-Plugin geschrieben, welches auch gut funktioniert, bis auf eine noch fehlende Funktion, die allerdings sehr wichtig ist. Wenn eine neue Seite veröffentlicht wird, sollen die Post-ID, der Permalink und der Titel in eine Tabelle in der Datenbank eingetragen werden, damit das Plugin seine Arbeit machen kann.
Wenn ich mich nicht komplett falsch eingelesen habe, soll das mit dem transition_post_status Hook funktionieren. Bevor es an die Funktion geht, möchte ich testen, ob der Hook auch aufgerufen wird. Dafür habe ich einfach eine kleine Javascript-Ausgabe gebaut. Die Funktion sieht so aus:
Beim Klick auf "Neue Seite erstellen" funktioniert das auch, in der Console bekomme ich die erwartete Ausgabe. Wenn ich die Seite dann veröffentliche, passiert nichts. Die Console wird durch Aktionen nicht gelöscht, "Preserve log" ist aktiviert. Also sollten die Werte ja ausgeben werden. Um Fehler in meinem Plugin als Ursache auszuschließen, habe ich es deaktiviert und die Funktion in die functions.php meines Child-Themes kopiert.
Interessant ist dabei: Wenn ich innerhalb der Funktion eine weitere Funktion anlege, kriege ich einen Fehler, weil sie nicht redeclared werden kann. Dafür habe ich in der Console die gewünschte und erwartete Ausgabe in doppelter Ausführung. Wenn ich einen anderen Fehler einbaue, passsiert das ebenfalls. Nur ohne Fehler kriege ich die Ausgabe nicht. Die Seite wird veröffentlicht und in der Console passiert überhaupt nichts hinsichtlich der Funktion.
Welchen kapitalen Denkfehler habe ich da drin? Wird die Funktion ausgeführt und die Console von Chrome verheimlicht mir etwas? Die Lösung ist wahrscheinlich völlig einfach und logisch, aber ich komme einfach nicht drauf. Wordpress ist aktuell in Version 5.8.1.
Danke für jeden Vorschlag
Ich habe ein kleines Wordpress-Plugin geschrieben, welches auch gut funktioniert, bis auf eine noch fehlende Funktion, die allerdings sehr wichtig ist. Wenn eine neue Seite veröffentlicht wird, sollen die Post-ID, der Permalink und der Titel in eine Tabelle in der Datenbank eingetragen werden, damit das Plugin seine Arbeit machen kann.
Wenn ich mich nicht komplett falsch eingelesen habe, soll das mit dem transition_post_status Hook funktionieren. Bevor es an die Funktion geht, möchte ich testen, ob der Hook auch aufgerufen wird. Dafür habe ich einfach eine kleine Javascript-Ausgabe gebaut. Die Funktion sieht so aus:
Code:
function create_auto_rating($new_status, $old_status, $post){
global $post;
global $_POST;
?>
<script type="text/javascript">
var new_status = <?php echo json_encode($new_status);?>;
var old_status = <?php echo json_encode($old_status);?>;
var post = <?php echo json_encode($post);?>;
console.log(new_status);
console.log(old_status);
console.log(post);
</script>
<?php
}
add_action('transition_post_status', 'create_auto_rating', 10, 3);
Beim Klick auf "Neue Seite erstellen" funktioniert das auch, in der Console bekomme ich die erwartete Ausgabe. Wenn ich die Seite dann veröffentliche, passiert nichts. Die Console wird durch Aktionen nicht gelöscht, "Preserve log" ist aktiviert. Also sollten die Werte ja ausgeben werden. Um Fehler in meinem Plugin als Ursache auszuschließen, habe ich es deaktiviert und die Funktion in die functions.php meines Child-Themes kopiert.
Interessant ist dabei: Wenn ich innerhalb der Funktion eine weitere Funktion anlege, kriege ich einen Fehler, weil sie nicht redeclared werden kann. Dafür habe ich in der Console die gewünschte und erwartete Ausgabe in doppelter Ausführung. Wenn ich einen anderen Fehler einbaue, passsiert das ebenfalls. Nur ohne Fehler kriege ich die Ausgabe nicht. Die Seite wird veröffentlicht und in der Console passiert überhaupt nichts hinsichtlich der Funktion.
Welchen kapitalen Denkfehler habe ich da drin? Wird die Funktion ausgeführt und die Console von Chrome verheimlicht mir etwas? Die Lösung ist wahrscheinlich völlig einfach und logisch, aber ich komme einfach nicht drauf. Wordpress ist aktuell in Version 5.8.1.
Danke für jeden Vorschlag