it-swarm.dev

Použití widgetu 'mimo' widget

Chci uložit některé parametry do možností widgetu, které jsou pak předány na jinou stránku. Widget je forma, která volá webovou službu.

Možnosti, které chci předat, jsou autentizace pro webovou službu, která je v současné době pevně zakódována do stránky s výsledky (provádí se jako šablona). Proto by měly být skryty před uživatelem webu.

Kód z widgetu/pluginu:

 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...

Stránka výsledků ...

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

Stále se učí, jak WP visí spolu, takže je mi líto n00b otázky.

11
JohnnyBizzle

@ JonathonByrd odpověď je pravděpodobně 'nejlepší' - určitě byste měli používat get_option pokud vůbec možné, protože neexistuje žádná záruka, že jméno volby zůstane stejné mezi verzemi WordPressu.

Podobně - @JonathonByrd také spoléhá na použití globální proměnné, která může být odstraněna/přejmenována (i když možná velmi nepravděpodobná).

Bohužel neexistují žádné veřejné obaly, které můžeme spolehlivě použít. Nejbližší je metoda get_settings vaší třídy Widget. Předpokládejme, že třída widgetů je My_Widget_Class, pak:

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

$settings je pak pole formuláře array(instance number => settings). Typicky bude mít váš widget jakýkoliv identifikátor jako my-widget-class-3 - a číslo instance zde je 3, a tak

 $settings[3]

udává nastavení (jako pole) pro widget my-widget-class-3. Mám pocit, že je to spolehlivější a do budoucna prověřená metoda.

16
Stephen Harris

Není vůbec otázka noob.

Budete se muset ponořit do MySQL (pomocí PhpMyAdmin nebo podobného) a nejprve získat název této možnosti. Následující SQL zobrazí seznam možností widgetu:

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

Pak ve vaší šabloně (nebo post/page s nějakým php pluginem) můžete get_option() takto:

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

Et voila!

4
Tom Wright

Všechny widgety a jejich možnosti jsou uloženy v souboru global $wp_registered_widgets. Stačí nahrát tuto proměnnou a vytisknout obsah najít možnosti widget, které hledáte.

4

Použil jsem metodu Stephena Harrise.

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

reset () dává první hodnotu klíče z pole, pokud nevíte, co je ID vašeho widgetu.

Poznámka: Nepomůže, pokud je aktivní více kopií widgetu. Protože vrací nastavení první kopie widgetu.

3
Ulugov

Možná jsem si špatně přečetl vaši otázku, ale zdá se, že to, co hledáte, je uložit nějaké možnosti nebo informace z vašeho widgetu (uživatelské jméno a heslo) někde ve WordPressu, kde je můžete znovu otevřít mimo kód widgetu . Pokud je to správné, budete se muset podívat na add_option () function (stejně jako update_option () a delete_option () podle potřeby).

Chcete-li nastavit možnost, postupujte takto:

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

Poté jej můžete načíst kdekoli v rámci WP voláním funkce get_option takto:

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