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


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.