Also, ich komme nicht vorwärts. Offensichtlich kann man mit plugin_action_links_ tatsächlich nur einen Link und keinen Prozeduraufruf als Action Link einrichten. danielgoehr hat mir einen Workaround empfohlen, den ich noch nicht durchblicke.
Noch einmal, was ich erreichen möchte: einem Plugin einen Action Link hinzufügen, mit welchem eine Prozedur im Plugin-Code aufgerufen wird. Diese Prozedur soll ein kleines Menü anzeigen, welches Parametereingaben ermöglicht.
Beiträge von maksimilian
-
-
Hallo Ihr,
ich möchte verhindern, dass zumindest über die Bedienoberfläche des Dashboards der Code eines Plugins verändert wird. Kann man dies für ein einziges Plugin verhindern ? Ich möchte den Editor nicht generell ausschalten [FONT=arial](DISALLOW_FILE_EDIT). [/FONT]Mit add_filter( 'plugin_action_links_') ist das ja nicht möglich, weil das erst bei Aktivierung wirkt.
maksimilian
-
register_uninstall_hook() funktioniert gut. Noch eine Frage zum Aufräumen. Offensichtlich die Funktion register_widget() erzeugt in der DB-Tabelle wp_options einen Eintrag mit Key widget_<widget-id>. Natürlich kann man den explizit mit delete_option() entfernen. Gibt es eine andere Methode ?
Wenn ein Plugin bei seiner Installation ein Widget erzeugt, sollten bei Deinstallation auch sämtliche Spuren dieses Widgets verschwinden. -
Ich würde auch stark zu letzterem tendieren. Ich persönlich deaktiviere schon häufiger mal Plugins zu Testzwecken. Wenn dann jedes Mal "aufgeräumt" werden würde, würde mich das schon sehr nerven.
Kommt aber natürlich auch darauf an, was du da "aufräumst" :)Man muss wohl zwischen Deaktivierung und Deinstallation (= Löschen ?) unterscheiden. Bei Einführung von Plugin-Aktionen für Deaktivierung ist berücksichtigen, dass ein WordPress Update alle Plugins deaktiviert. Mir geht es wie Dir, dass ich während einer Testphase häufiger deaktiviere. Da ist es manchmal unerwünscht, dass bestimmte Daten (Datenbank) gelöscht werden. Danke für Deine Einschätzung.
Eine weitere Möglichkeit, Deaktivierungsaktionen zu definieren bietet eine uninstall.php . Dies dann separiert vom Plugin-Code.
-
register_deactivation_hook() wobei man für Aufräumarbeiten eher register_uninstall_hook() verwendet.
Danke für den Tipp.
-
Hallo Ihr,
ist es möglich, bei Deaktivierung eines Plugins eine eigene Prozedur aufrufen zu lassen (z.B. für Aufräumarbeit) ?
maksimilian
-
@ b3317133 #7
Ich muss mich entschuldigen, denn ich habe den oben zitierten Code aus einem Beispiel übernommen und nicht genau genug überprüft. myplugin ist bei mir nicht definiert und muss wohl erst mit add_menu_page() erzeugt werden. Ich schaue mir die Funktion erst mal genauer an.
-
Ich habe in das Plugin folgenden Code eingebaut:
add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'add_action_links' );
function add_action_links ( $links ) {
$mylinks = array(
'<a href="' . admin_url( 'options-general.php?page=myplugin' ) . '">Visibility</a>',
);
return array_merge( $links, $mylinks );
}Wenn ich auf der Plugin-Seite "Visibility" auswähle, kommt die Meldung
"Du bist leider nicht berechtigt, auf diese Website zuzugreifen."Ich habe die Rolle "Administrator".
-
Gut, die neue Aktivierungs-Option kann ich anfügen. Wie erreiche ich es, dass durch Anklicken dieser Option eine Aktion ausgelöst wird. In meinem speziellen Fall möchte ich eine Auswahl zwischen 2 Einstellungen anbieten und das Ergebnis mit update_options() abspeichern.
-
Das sind sog. Plugin Action Links, siehe auch hier: plugin_action_links_(plugin file name)
Danke, b3317133, für den schnellen Tipp !
-
Hallo Ihr,
wie fügt man bei einem selbst implementierten Plugin zu den Standard-Optionen Aktivieren/Deaktivieren und Bearbeiten weitere eigene Aktivierungs-Optionen hinzu ?
maksimilian
-
Hallo Ihr,
gibt es die Möglichkeit, in einer Widget-Klasse eine Prozedur zu definieren, welche beim Schließen der Website aufgerufen wird ?
maksimilian
-
Hallo Ihr,
ich habe einige Fragen zur Widget API. Für die Ausgabe beim Frontend kann dem Titel eines (in einem Plugin selbst programmierten) Widgets der Inhalt der Globalen $before_title vorangestellt werden. Dazu folgende Fragen:
Wo wird die Variable $before_title definiert ?
Dem Seitenquelltext des Browsers kann ich entnehmen, dass der Inhalt von $before_title <h3 class="widget-title"> ist. Wo finde ich die Definition der Klasse widget-title ? In der style.css (Theme Vantage) finde ich mehrere verschiedenen Objekten zugeordnete Definitionen .widget-title. Welche ist die hier maßgebliche ?maksimilian
-
Ich ziehe die Frage zurück. Die Situation ist wohl zu speziell. Das Problem entsteht durch die Codierung der Ausgabe in der widget-Methode des Widgets.
maksimilian
-
Hallo Ihr,
ich habe in einem kleinen Plugin ein Widget eingerichtet (als Klasse WP_WIDGET mittels Funktion register_widget). Zur Ausgabe der Klassen-Methode "widget" habe ich eine Frage.
Wenn das Widget in einen Sidebar eingefügt wird, erscheinen die Elemente des Sidebar ab einschließlich des Widgets nicht mehr. Im Seitenquelltext des Browsers kann man auch erkennen, dass die entsprechenden div-Tags fehlen.
Wenn ich beispielsweise im Menu Footer einen Eintrag für eine neue Seite hinzufüge, in welche ich das Widget einbaue (mittels "Widget hinzufügen"), erscheint die Ausgabe im Frontend, wenn im Footer Menu der entsprechende Eintrag aufgerufen wird, dann natürlich in einer eigenen Seite.Wie kann ich erreichen, dass die Ausgabe des Widgets direkt in einem Sidebar oder im Footer erscheint. Da sich die Website im lokalen Testzustand (xampp) befindet, kann ich keinen Link anbieten.
maksimilian
-
@ b3317133 #6
Danke für den Tipp. Mit einer Widget-Klasse zu arbeiten, ist auch die elegantere Methode.
-
@ b3317133 #4
Hier der Code vom Plugin testplugin.php (es wird im Theme starkers eingesetzt):
<?php
/*
Plugin Name: testplugin
Version: 1.0
*/function wptst_sidebar_widget ($args) /* callback Funktion, wird wo aufgerufen ? */
{}
function wptst_add_widget ()
{
wp_register_sidebar_widget ('testwidget', 'Test Widget', 'wptst_sidebar_widget');
}add_action ('init', 'wptst_add_widget');
?>
Soweit wie ich es im PHP Debugging in Netbeans verfolgen kann, tritt der Fehler nach Einfügen des Plugins in den Sidebar auf, wenn in admin-ajax.php (bei mir in Zeile 91) die Funktion do_action('wp_ajax'.$_REQUEST['action']); aufgerufen wird.
-
warum verwendest du keine IDE, die WordPress Support bietet?
ralf
Danke für die ausführliche Antwort. Könntest Du mir bitte einen Link geben ?Mir ist klar, dass das Thema sehr komplex und meine Frage nicht detailliert genug ist. Es hätte ja sein können, dass die zitierte Meldung Rückschlüsse zulässt.
-
Die Frage hat sich inzwischen erledigt !
-
Hallo Ihr,
ich führe einen einfachen Test mit einem Plugin durch (Lernphase). Ein Test-Widget soll einem Sidebar hinzugefügt werden. Das Plugin für das Widget besteht nur aus add_action ('init', 'callback-function' ) und der Funktion callback-function, welche das Widget mit dem Aufruf von wp_register_sidebar_widget registriert. Das Widget lässt sich nach Aktivierung im Customizer dem Sidebar hinzufügen, nach Speichern erfolgt aber die Meldung "Ungültiger Wert" und das Hinzufügen scheitert. PHP Debugging bringt mich leider nicht weiter (dazu fehlen mir tiefere WP Kenntnisse).
In der Datei debug.log steht zuletzt der Eintrag
WP_Customize_Widgets->is_wide_widget($widget_id = *uninitialized*) C:\xampp\htdocs\wordpress\wp-includes\class-wp-customize-widgets.php:506Kann mir hier jemand weiterhelfen ? Eventuell auch mit Verweis auf Quellen zur Plugin/Widget-Programmierung.
maksimilian