Використання параметрів віджетів "поза" віджета


13

Я хочу зберегти деякі параметри у параметрах віджетів, які потім передаються на іншу сторінку. Віджет - це форма, яка викликає веб-сервіс.

Варіанти, які я хочу пройти, - це автентифікація веб-сервісу, який наразі важко закодований на сторінці результатів (зроблено як шаблон). Тому їх слід приховувати від користувача веб-сайту.

Код з віджета / плагіна:

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

Сторінка результатів ...

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

Ще дізнаюсь, як WP висить разом, тож шкода питання n00b.

Відповіді:


16

@ Відповідь JonathonByrd, мабуть, "найкраще" - звичайно, вам слід скористатися, get_optionякщо це можливо, оскільки немає гарантії, що назва опції залишиться однаковою між версіями WordPress.

Аналогічно - @JonathonByrd також покладається на використання глобальної змінної, яку можна видалити / перейменувати (хоча, можливо, дуже малоймовірно).

На жаль, не існує публічних фасовок, якими ми можемо надійно користуватися. Найближчим є get_settingsметод вашого класу віджетів. Припустимо, ви класу віджетів є My_Widget_Class:

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

$settingsто є масив форми array(instance number => settings). Зазвичай ваш віджет матиме будь-який ідентифікатор на зразок my-widget-class-3- і "номер примірника" тут 3, і так

 $settings[3]

дає налаштування (як масив) віджета my-widget-class-3. Я вважаю, що це більш надійний і майбутній метод підтвердження.


4

Це взагалі не питання.

Вам потрібно буде зануритися в MySQL (використовуючи PhpMyAdmin або подібне) і спочатку отримати ім'я цього параметра. Наступний SQL відображатиме список параметрів віджетів:

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

Тоді у вашому шаблоні (або публікації / сторінці з якимось плагіном php exec) вам може get_option()сподобатися це:

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

Et voila!


Thx, але нічого не повернуто із запиту вибору.
JohnnyBizzle

Це дивно. Як називається плагін, який надає віджет?
Том Райт


3

Я використав запропонований метод Стівена Харріса.

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

reset () дає перше ключове значення з масиву, якщо ви не знаєте, що є ідентифікатором вашого віджета.

Примітка. Це не допомагає, якщо є кілька копій віджета. Тому що він повертає налаштування лише першої копії віджета.


0

Можливо, я неправильно читаю ваше запитання, але, схоже, те, що ви шукаєте, - це зберегти деякі параметри чи інформацію зі свого віджета (ім’я користувача та пароль) десь у WordPress, де ви зможете повторно отримати доступ до них за межами коду віджета . Якщо це правильно, ви хочете переглянути функцію add_option () (а також update_option () та delete_option () за потреби).

Щоб встановити параметр, просто зробіть це:

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

Потім ви можете отримати його в будь-якому місці WP, зателефонувавши на get_option таким чином:

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

Чи можете ви пояснити трохи більше, що ви намагаєтеся зробити? Чи є ідея встановити ім'я користувача та пароль для сервісу у формі віджетів, а потім передати їх разом із сервісом на кожній завантаженій сторінці, щоб доставити певний вміст користувачеві веб-сайту (не показуючи ім’я користувача та пароль)?

Добре дякую, спробую. Я зараз заплутався, частково через тиск часу.
JohnnyBizzle

Щоб пояснити далі, віджет розміщує 2 варіанти, необхідні послуги та Поштовий код. Форма подається на певну сторінку (я знаю, що можу використовувати поточну сторінку), яку я назвав результатами пошуку. Результати пошуку містять параметри, які я передаю в URL-адресу, викликаючи веб-сервіс. Результати повертаються як XML, який передається в масив, а потім виводиться користувачеві. Цей веб-сайт використовує ту саму веб
службу

... намір полягав у використанні параметрів для імені користувача / pwd для веб-сервісу, щоб інші сайти могли використовувати той самий віджет.
JohnnyBizzle

Гаразд, тож власникам сайтів потрібно буде ввести своє власне ім’я користувача та пароль, правильно? Після цього він використовує цю інформацію, щоб витягнути XML з іншого сайту, а потім відобразити його. У цьому випадку ви хочете використовувати get_option та add_option. Функція apply_filters працює на стороні відображення речей - тобто вона не змінює дані у вашій базі даних, вона змінює їх до того, як буде показана кінцевому користувачеві. Це здається, що ви хочете взяти форму введення у віджет і зберегти його з допомогою add_option. На цьому сайті є чудовий підручник: valums.com/create-wordpress-widget
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.