Como adicionar opções de blog personalizadas ao novo formulário de configuração do blog?

15

Parece um requisito simples, mas estou com dificuldades:

  1. Eu quero adicionar um campo de opção ao "Adicionar novo site" .
    Uma opção de texto simples está bem. Como faço isso?

  2. Eu preciso salvar esta opção de blog personalizado quando o site é criado.

    Eu sei que posso usar o gancho 'wpmu_new_blog', que transmite a variável $meta com as opções fornecidas, mas estou pensando se há uma maneira de fazer isso tudo em uma etapa para que eu não precise executar outra DB consulta, ou pior ainda, substituir / substituir todo o processo de criação do site?

Notas:

Estou usando o WP 3.3.1 com uma configuração MultiSite. Eu estou escrevendo um plugin que lista todos os sites que correspondem ao valor do campo personalizado especificado (vamos chamá-lo de "tipo").

Além disso, sou um desenvolvedor PHP experiente, mas ainda sou relativamente novo no WordPress, então, por favor, assuma que ainda não estou intimamente familiarizado com todas as várias funções e ganchos do WP.

    
por Brian Lacy 25.04.2012 / 22:12

3 respostas

9

Juntando duas respostas (*), eu fiz um plugin para adicionar uma opção meta customizada ao registrar um novo site (front e back end) e exibir seu valor em uma coluna na tela Sites.

Categorias multisite

...

(*) referências de código

1 - WordPress + Multisite: como adicionar opções de blog personalizadas ao formulário Adicionar novo site no administrador de rede? , por @dennisg

2 - Multisite: Como adicionar opções de blog personalizadas ao novo formulário de configuração do blog? , por @tbuteler

O add_action('wpmu_new_blog', 'add_new_blog_field'); foi mesclado das duas respostas.

Eu já estava usando o código da coluna de ID no meu multisite e também adicionei a coluna Category no plug-in.

[atualização]

Tentou classificar a coluna Categoria, mas parece quase insolúvel ...

Veja esta pergunta / resposta: Filtros 'request' e 'parse_query' não disparando em sites.php nem link-manager. php

[atualização 2]

Eu refiz o plug-in e agora as categorias são classificáveis. A primeira versão do plugin é uma Gist agora (link atualizado no início) e a nova versão fica no GitHub .

    
por brasofilo 02.05.2012 / 22:36
8

O processo de inscrição no Multisite não é fácil de ajustar. Ele tem muitos ganchos para brincar, ao contrário de outros processos, mas eles não parecem se juntar muito bem para customização pesada, então eu entendo sua frustração.

Se eu entendi corretamente, não é tão complicado conseguir o que você quer, embora não possa ser uma solução de uma única etapa sem substituir muito do comportamento padrão do WordPress, principalmente porque a inscrição (ou seja, quando o usuário envia as informações personalizadas) e ativação (ou seja, quando o novo blog será realmente criado) acontecerá separadamente.

Aqui está um código muito aproximado que você precisará para começar. Espero que você esteja na direção certa:

// 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']);
}

Tenha em mente:

  1. Se você quiser filtrar a entrada via plug-in, eu strongmente sugerir o uso de uma entrada de seleção para bloquear as opções fornecidas;
  2. Como alguns campos são obrigatórios e passam por validação durante registro (caracteres mínimos, caracteres não permitidos para o site nome, nomes na lista negra, etc), eu sugiro verificar se o seu campo extra no $ _REQUEST global ao preencher o valor do entrada na primeira função, para que o usuário não perca sua entrada caso ele seja enviado de volta para corrigir o valor dos campos padrão do WordPress;
  3. Você pode obviamente substituir a última ideia da função por seja qual for o melhor para o seu plug-in, mas o valor do campo será agora disponível a partir dessa última função, que deve ajudá-lo do seu jeito.

Em uma nota final, se você quiser processar todos os valores 'extra_field' de todos os blogs existentes mais tarde, eu sugiro que você armazene as informações em uma única tabela; talvez use update_site_option em vez de update_blog_option nessa última função, perdendo o blog_id, que não é necessário nesse caso.

De qualquer forma, deixe-nos saber como está indo e boa sorte!

    
por Tomas Buteler 29.04.2012 / 02:34
-1

se você olhar para o site-new.php, você já teria recebido sua resposta - e isso não é verdade!

Não há condições para verificar se algo pode ser adicionado ao formulário. No entanto, estudei o arquivo e acredito que você terá que adicionar manualmente este campo de entrada em site-new.php e passar o valor como meta na matriz para a função wpmu_create_blog que você encontrará em algum lugar perto da linha 77. NÃO TESTADO, mas lendo sobre qual função pode ser o que você está procurando.

    
por george.n 28.04.2012 / 23:18