it-swarm.com.de

Widget-Optionen außerhalb des Widgets verwenden

Ich möchte einige Parameter in den Widget-Optionen speichern, die dann an eine andere Seite übergeben werden. Das Widget ist ein Formular, das einen Webservice aufruft.

Die Optionen, die ich übergeben möchte, sind die Authentifizierung für den Webservice, der derzeit fest auf der Ergebnisseite codiert ist (als Vorlage erstellt). Aus diesem Grund sollten sie für den Benutzer der Website nicht sichtbar sein.

Code aus dem Widget/Plugin:

 function widget($args, $instance){
  extract($args);
  $title = apply_filters('widget_title', empty($instance['title']) ? 'Choose a service' : $instance['title']);
  $lineOne = empty($instance['username']) ? '' : $instance['username'];
  $lineTwo = empty($instance['password']) ? '' : $instance['password'];

  # Before the widget

  echo $before_widget; // etc...

Ergebnisseite ...

$url = "http://www.nhs.uk/NHSCWS/Services/ServicesSearch.aspx?user=".[USERNAME]."&pwd=".[PASSWORD]."&q=".$_POST['PostCode']."&type=".$_POST['ServiceType']."";

Ich lerne noch, wie WP zusammen hängt, also entschuldige die n00b-Frage.

11
JohnnyBizzle

@ JonathonByrds Antwort ist wahrscheinlich "am besten" - sicherlich sollten Sie get_option verwenden, wenn dies überhaupt möglich ist, da es keine Garantie gibt, dass der Optionsname zwischen den WordPress-Versionen gleich bleibt.

In ähnlicher Weise ist @JonathonByrd auch auf die Verwendung einer globalen Variablen angewiesen, die entfernt/umbenannt werden kann (obwohl dies möglicherweise sehr unwahrscheinlich ist).

Leider gibt es keine öffentlichen Wrapper, die wir zuverlässig verwenden können. Das nächste ist die get_settings-Methode Ihrer Widget-Klasse. Nehmen wir an, Ihre Widget-Klasse ist My_Widget_Class, dann:

 $dummy = new My_Widget_Class();
 $settings = $dummy->get_settings();

$settings ist dann ein Array der Form array(instance number => settings). Normalerweise hat Ihr Widget eine ID wie my-widget-class-3 - und die 'Instanznummer' hier ist 3 und so weiter

 $settings[3]

gibt die Einstellungen (als Array) für das Widget my-widget-class-3 an. Dies halte ich für eine zuverlässigere und zukunftssicherere Methode.

16
Stephen Harris

Überhaupt keine Noob-Frage.

Sie müssen sich in MySQL (mit PhpMyAdmin oder ähnlichem) einarbeiten und zuerst den Namen der Option abrufen. Die folgende SQL listet die Widget-Optionen auf:

SELECT *
FROM `wp_options`
WHERE `option_name`
REGEXP '^widget_'
LIMIT 0 , 30

Dann können Sie in Ihrer Vorlage (oder auf einer Seite mit einem PHP-Exec-Plugin) get_option() wie folgt vorgehen:

<?php echo get_option('your_widget_option_name'); ?>

Et voila!

4
Tom Wright

Alle Widgets und ihre Optionen sind in global $wp_registered_widgets gespeichert. Laden Sie einfach diese Variable und drucken Sie den Inhalt aus, um die gewünschten Widget-Optionen zu finden.

Ich habe die von Stephen Harris vorgeschlagene Methode verwendet.

$dummy = new My_Widget_Class();
$settings = $dummy->get_settings();
$settings = reset($settings);

reset () gibt den ersten Schlüsselwert aus dem Array an, wenn Sie die ID Ihres Widgets nicht kennen.

Hinweis: Es hilft nicht, wenn dort mehrere Kopien des Widgets aktiv sind. Weil es nur die Einstellungen der ersten Kopie des Widgets zurückgibt.

3
Ulugov

Vielleicht verstehe ich Ihre Frage falsch, aber es sieht so aus, als ob Sie einige Optionen oder Informationen aus Ihrem Widget (Benutzername und Passwort) irgendwo in WordPress speichern, wo Sie außerhalb des Widget-Codes erneut darauf zugreifen können . Wenn dies korrekt ist, sollten Sie die Funktion add_option () (sowie ggf. update_option () und delete_option () prüfen.

So legen Sie eine Option fest:

<?php add_option("my_widget_option_name", 'option_value'); ?>

Sie können es dann überall in WP abrufen, indem Sie get_option wie folgt aufrufen:

<?php $option_val = get_option("my_widget_option_name"); ?>
0
brandwaffle