Usando opções de widget 'fora' do widget

11

Eu quero salvar alguns parâmetros nas opções do widget que são passadas para outra página. O widget é um formulário que chama um serviço da Web.

As opções que desejo passar são a autenticação para o serviço da Web, que atualmente é codificado na página de resultados (feito como um modelo). Portanto, eles devem estar ocultos do usuário do site.

Código do widget / plug-in:

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

Página de resultados ...

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

Ainda aprendendo como o WP fica junto, desculpe a pergunta do n00b.

    
por JohnnyBizzle 22.09.2010 / 10:19

5 respostas

16

@ A resposta de JonathonByrd é provavelmente "melhor" - certamente você deve usar get_option se possível, já que não há garantia de que o nome da opção permanecerá o mesmo entre as versões do WordPress.

Da mesma forma - @JonathonByrd também depende do uso de uma variável global que pode ser removida / renomeada (embora talvez muito improvável).

Infelizmente, não há wrappers públicos que possamos usar com segurança. O mais próximo é o método get_settings da sua classe Widget. Vamos supor que sua classe de widget seja My_Widget_Class , então:

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

$settings é, então, uma matriz da forma array(instance number => settings) . Normalmente, seu widget terá qualquer ID como my-widget-class-3 - e o "número da instância" aqui é 3 e, portanto,

 $settings[3]

fornece as configurações (como uma matriz) para o widget my-widget-class-3 . Isso eu sinto é um método mais confiável e futuro.

    
por Stephen Harris 03.07.2012 / 15:27
4

Não é uma questão noob.

Você precisará mergulhar no MySQL (usando PhpMyAdmin ou similar) e obter o nome da opção primeiro. O seguinte SQL listará as opções do widget:

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

Em seguida, no seu modelo (ou postagem / página com algum tipo de plugin exec do PHP), você pode get_option() isso:

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

Et voila!

    
por Tom Wright 22.09.2010 / 10:51
4

Todos os widgets e suas opções são armazenados em global $wp_registered_widgets . Basta carregar essa variável e imprimir o conteúdo para encontrar as opções de widget que você está procurando.

    
por Ecommerce Consultant 27.05.2011 / 00:23
3

Eu usei o método sugerido por Stephen Harris.

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

reset () fornece o primeiro valor de chave do array, se você não souber qual é o ID do seu widget.

Nota: Não ajuda se houver várias cópias do widget ativas. Porque retorna as configurações da primeira cópia do widget apenas.

    
por Ulugov 02.07.2015 / 11:50
0

Talvez eu esteja lendo mal sua pergunta, mas parece que o que você está querendo fazer é salvar algumas opções ou informações do seu widget (nome de usuário e senha) em algum lugar no WordPress, onde você pode acessá-las novamente o código do widget. Se isso estiver correto, você vai querer olhar para a função add_option () (assim como update_option () e delete_option ( ) como necessário).

Para definir uma opção, faça o seguinte:

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

Você pode recuperá-lo em qualquer lugar dentro do WP chamando get_option assim:

<?php $option_val = get_option("my_widget_option_name"); ?>
    
por brandwaffle 23.09.2010 / 11:57