Как добавить, что Пользовательские Опции Блога к новому блогу устанавливают форму?

Походит на достаточно простое требование, но я борюсь:

  1. Я хочу добавить поле опции к, "Добавьте Новый Сайт".
    Простая текстовая опция прекрасна. Как я делаю это?

  2. Я должен сохранить эту пользовательскую опцию блога, когда сайт создается.

    Я знаю, что могу использовать рычаг 'wpmu_new_blog', который передает $meta переменная с предоставленными опциями, но я задаюсь вопросом, существует ли способ сделать это все на одном шаге, таким образом, я еще не должен выполнять другой запрос DB, или хуже, переопределять/заменять целый процесс создания сайта?

Примечания:

Я использую WP 3.3.1 с установкой MultiSite. Я пишу плагин, который перечисляет все Сайты, которые соответствуют указанному пользовательскому значению поля (давайте назовем его "типом").

Кроме того, я - опытный разработчик PHP, но я все еще относительно плохо знаком со взламыванием WordPress, поэтому предположите, что я еще не глубоко знаком со всеми различными функциями WP и рычагами.

17
13.07.2013, 19:35
3 ответа

Присоединяясь к двум ответам (*), я сделал плагин, чтобы добавить пользовательскую meta опцию при регистрации нового сайта (фронтэнд и бэкэнд) и отобразить его значение в столбце на экране Sites.

Многоузловые категории

enter image description here enter image description here ...

(*) кодируют ссылки

1 - WordPress + Многоузловой: Как добавить пользовательские опции блога Добавить, что Новый Сайт формируется в Сетевом Администраторе?, @dennisg

2 - Многоузловой: Как добавить, что Пользовательские Опции Блога к новому блогу устанавливают форму?, @tbuteler

add_action('wpmu_new_blog', 'add_new_blog_field'); был объединен из двух ответов.

Я уже использовал код столбца ID в своем многоузловом, и также добавил Столбец категорий в плагине.

[обновление]

Попробованный для создания Столбца категорий поддающимся сортировке, но кажется почти неразрешимым...

Посмотрите этот вопрос/ответ: Фильтры 'запрос' и 'parse_query', не стреляя в sites.php, ни ссылку-manager.php

[обновите 2]

Я переделал плагин, и теперь категории являются поддающимися сортировке. Первой версией плагина является Суть теперь (ссылка, обновленная вначале), и новая версия остается в GitHub.

9
19.02.2020, 21:57
  • 1
    +1 ума Эй здорово, brasofilo! Я надеюсь дать этому :) –  Brian Lacy 09.05.2012, 20:45

Многоузловой процесс регистрации не является легкой вещью настроить. Это действительно имеет много рычагов для проигрывания с, в отличие от других процессов, но они, кажется, не объединяются слишком хорошо для тяжелой настройки, таким образом, я понимаю разочарование.

Если я понимаю правильно, дело не в этом сложный для достижения того, что Вы хотите, хотя это не может быть решение с одним шагом, не переопределяя большую часть поведения WordPress по умолчанию, главным образом потому что подписанный (т.е. когда Ваш пользователь отправит пользовательскую информацию) и активация (т.е. когда новый блог будет на самом деле создан) происходят отдельно.

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

// Add text field on blog signup form
add_action('signup_blogform', 'add_extra_field_on_blog_signup');
function add_extra_field_on_blog_signup() { ?>
    <label>An extra field</label>
    <input type="text" name="extra_field" value="" />
<?php
}

// Append the submitted value of our custom input into the meta array that is stored while the user doesn't activate
add_filter('add_signup_meta', 'append_extra_field_as_meta');
function append_extra_field_as_meta($meta) {
    if(isset($_REQUEST['extra_field'])) {
        $meta['extra_field'] = $_REQUEST['extra_field'];
    }
    return $meta;
}

// When the new site is finally created (user has followed the activation link provided via e-mail), add a row to the options table with the value he submitted during signup
add_action('wpmu_new_blog', 'process_extra_field_on_blog_signup', 10, 6);
function process_extra_field_on_blog_signup($blog_id, $user_id, $domain, $path, $site_id, $meta) {
    update_blog_option($blog_id, 'extra_field', $meta['extra_field']);
}

Следует иметь в виду:

  1. Если бы Вы хотите отфильтровать вход через плагин, я настоятельно рекомендовал бы использовать избранный вход для блокировки вниз предоставленных возможностей;
  2. Так как некоторые поля требуются и проходят через проверку во время регистрации (минимальные символы, запрещенные символы для названия сайта, поместил в черный список имена, и т.д.), я предложу проверить на Ваше дополнительное поле на $ _REQUEST глобальный при заполнении значения входа на первой функции, так, чтобы пользователь не терял свой вход в случае, если он передал обратно для фиксации значения полей WordPress по умолчанию;
  3. Можно, очевидно, заменить идею последней функции любыми исками плагин лучше всего, но значение поля теперь будет доступно из той последней функции, которая должна помочь Вам на Вашем пути.

На заключительной ноте, если Вы хотите обработать все значения 'extra_field' из всех существующих блогов позже, я был бы сильный предлагать хранить информацию на единственной таблице; возможно, используйте update_site_option вместо update_blog_option на той последней функции, теряя blog_id, который не требуется в этом случае.

Так или иначе сообщите нам, как это идет, и удачи!

8
19.02.2020, 21:57
  • 1
    попытки Большой полезный ответ, большая информация, которой я могу найти хорошее применение здесь :) Я награждаю Лучший Ответ на brasofilo только потому, что Вы уже получили щедрость, и оба - большие ответы. –  Brian Lacy 09.05.2012, 20:47
  • 2
    Потрясающий ответ здесь, спасибо. Какая-либо идея, почему мое дополнительное поле добавляется к опциям сайта, если я не позволяю update_blog_option () выполненный? Я echo'd значения внутри process_extra_field_on_blog_signup () и выход () и это работало, extra_filed был добавлен к опциям. Но когда я просто позволяю ему пробежать без выхода () затем, extra_field НЕ добавляется к wp_xx_options. –  thatryan 04.01.2014, 18:55
  • 3
    @thatryan, это странно... Или что-то удаляет значения из базы данных (вряд ли), или они не добавляются вообще. Попытайтесь запустить еще некоторые тесты и не стесняйтесь отправлять вопрос при наличии затруднений при понимании этого. Следует иметь в виду, что этот ответ был, вероятно, для WordPress 3.5 или ранее, таким образом, они, возможно, изменили что-то в более новых версиях... –  Tomas Buteler 04.01.2014, 23:00

при рассмотрении кода сайта-new.php, Вы уже получили бы свой ответ - и это нет!

Нет никакой проверки условий, чтобы видеть, могло ли что-нибудь быть добавлено к форме. Однако я изучил файл, и полагайте, что необходимо будет вручную добавить это поле ввода в сайте-new.php и передать значение как meta в массиве к функции wpmu_create_blog, что Вы найдете где-нибудь близкую строку 77. НЕ ПРОТЕСТИРОВАННЫЙ, но читающий на том, что функция, это может быть тем, что Вы ищете.

-1
19.02.2020, 21:57

Теги

Похожие вопросы