2014-09-08 4 views
0

Я подумал о плагине для начинающих с песочницей (стерилизованный код ниже), чтобы сохранить URL-адрес для пользователя. Итак, в разделе администратора есть кнопка. Когда пользователь нажимает на него, открывается новое окно, которое приводит их к настроенному URL-адресу. Я знаю очень просто.Сохраните настройки плагина на пользователя

У меня есть функция плагина и функции обработки сообщений. Теперь я столкнулся с путаницей в использовании таблицы wp_options.

В частности, как сохранить настройки USER в таблице wp_options.

Я могу думать о трех путях.

  1. Добавить третье скрытое поле на странице конфигурации, содержащей идентификатор пользователя. Затем запись делается в wp_options. Напомним, что я найду запись в wp_options, соответствующую идентификатору пользователя. То, что я не уверен в этом, - это если wp_options законсервированная функция будет писать. Другими словами, если пользователь A сохранил www.google.com, то через 10 минут пользователь B сохранит www.bing.com. Записанные консервированные функции wp_options перезаписывают пользователя A? Могу ли я указать данные для отзыва?

  2. Во-вторых, чтобы сохранить настройки в таблице users ... как своего рода пользовательские настройки ... но для этого я не соглашаюсь на соглашение и не рискуя обновлением/совместимостью?

  3. Пользовательские таблицы, которые мне кажутся, это путь ... но вы, ребята, знаете гораздо больше, чем я, поэтому я хотел получить ваш вклад.

Вот код ... снова стерилизуется, поэтому некоторые вещи могут не иметь смысла, потому что я изменил их для своих целей на игровой площадке.

function register_setting() 
    { 
     register_setting('Options-group', 'OptionsA_options', 'options_callback'); 
     register_setting('Options-group', 'url'); 

    } 


    function options_callback() 
    { 
     alert('Options Callback'); 
    } 
    add_action('admin_init', 'register_setting'); 



    function my_plugin_menu() 
    { 
     add_options_page('Test Options', 'Button Click', 'activate_plugins', 'UNIque Name', 'some_options'); 
    } 
    add_action('admin_menu', 'my_plugin_menu'); 


    function clicky_options() 
    { 
     if (!current_user_can('manage_options')) { 
      wp_die(__('You do not have sufficient permissions to access this page.')); 
     } 
     ?> 

      <div class="wrap"> 
       <h2>Config</h2> 

       <form method="post" action="somepage_options.php"> 

        <?php settings_fields('Options-group');?> 

        <?php do_settings_sections('Options-group');?> 


        <table class="form-table"> 
         <tr valign="top"> 
          <th scope="row">Site Url (including http:// OR https://)</th> 
          <td><input type="text" name="url" value="<?php echo esc_attr(get_option('url')); ?>" /></td>      
         </tr> 
        </table> 


        <?php submit_button('Sign On');?> 

       </form> 
      </div> 

     <?php 
    } 

Форма послеуборочная:

$url = $_POST['url']; 

$FullUrl = $url."/" 

header("Location: $FullUrl", true, 301); 
exit(); 
+0

Я бы рекомендовал пользовательскую таблицу. Поскольку вы хотите сохранить настройки для каждого пользователя, вы должны сохранить его в метателе пользователя. – WisdmLabs

+0

@WisdmLabs Звучит неплохо. Спасибо. Если вы хотите сделать свой комментарий ответом ... с образцом кода еще лучше ... но не нужно ... Я с радостью отмечу как ответ. – GPGVM

+0

Я добавил свой комментарий как ответ :) – WisdmLabs

ответ

1

Так в основном, вы пытаетесь сохранить пользовательские входные данные в таблице 'wp_options' с помощью 'register_settings'. Вместо этого вы можете просто сохранить форму и добавить вход в usermeta для обработки настроек для каждого пользователя -

$ user_id = get_current_user_id();

update_user_meta ($ user_id, 'input_url', $ _POST ['url']);

Вы можете использовать 'update_user_option', если имеете дело с multisite.

Смежные вопросы