Походит на достаточно простое требование, но я борюсь:
Я хочу добавить поле опции к, "Добавьте Новый Сайт".
Простая текстовая опция прекрасна. Как я делаю это?
Я должен сохранить эту пользовательскую опцию блога, когда сайт создается.
Я знаю, что могу использовать рычаг 'wpmu_new_blog', который передает $meta
переменная с предоставленными опциями, но я задаюсь вопросом, существует ли способ сделать это все на одном шаге, таким образом, я еще не должен выполнять другой запрос DB, или хуже, переопределять/заменять целый процесс создания сайта?
Примечания:
Я использую WP 3.3.1 с установкой MultiSite. Я пишу плагин, который перечисляет все Сайты, которые соответствуют указанному пользовательскому значению поля (давайте назовем его "типом").
Кроме того, я - опытный разработчик PHP, но я все еще относительно плохо знаком со взламыванием WordPress, поэтому предположите, что я еще не глубоко знаком со всеми различными функциями WP и рычагами.
Присоединяясь к двум ответам (*), я сделал плагин, чтобы добавить пользовательскую meta опцию при регистрации нового сайта (фронтэнд и бэкэнд) и отобразить его значение в столбце на экране Sites.
...
(*) кодируют ссылки
2 - Многоузловой: Как добавить, что Пользовательские Опции Блога к новому блогу устанавливают форму?, @tbuteler
add_action('wpmu_new_blog', 'add_new_blog_field');
был объединен из двух ответов.
Я уже использовал код столбца ID в своем многоузловом, и также добавил Столбец категорий в плагине.
[обновление]
Попробованный для создания Столбца категорий поддающимся сортировке, но кажется почти неразрешимым...
Посмотрите этот вопрос/ответ: Фильтры 'запрос' и 'parse_query', не стреляя в sites.php, ни ссылку-manager.php
[обновите 2]
Я переделал плагин, и теперь категории являются поддающимися сортировке. Первой версией плагина является Суть теперь (ссылка, обновленная вначале), и новая версия остается в GitHub.
Многоузловой процесс регистрации не является легкой вещью настроить. Это действительно имеет много рычагов для проигрывания с, в отличие от других процессов, но они, кажется, не объединяются слишком хорошо для тяжелой настройки, таким образом, я понимаю разочарование.
Если я понимаю правильно, дело не в этом сложный для достижения того, что Вы хотите, хотя это не может быть решение с одним шагом, не переопределяя большую часть поведения 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']);
}
Следует иметь в виду:
На заключительной ноте, если Вы хотите обработать все значения 'extra_field' из всех существующих блогов позже, я был бы сильный предлагать хранить информацию на единственной таблице; возможно, используйте update_site_option
вместо update_blog_option
на той последней функции, теряя blog_id, который не требуется в этом случае.
Так или иначе сообщите нам, как это идет, и удачи!
при рассмотрении кода сайта-new.php, Вы уже получили бы свой ответ - и это нет!
Нет никакой проверки условий, чтобы видеть, могло ли что-нибудь быть добавлено к форме. Однако я изучил файл, и полагайте, что необходимо будет вручную добавить это поле ввода в сайте-new.php и передать значение как meta в массиве к функции wpmu_create_blog, что Вы найдете где-нибудь близкую строку 77. НЕ ПРОТЕСТИРОВАННЫЙ, но читающий на том, что функция, это может быть тем, что Вы ищете.