Eu uso no meu site o plugin User Submitted Posts (http://wordpress.org/extend/plugins/user-submitted-posts/). Ele é excelente. Você programa tudo pelo painel, podendo colocar uploader de arquivos, tags, categorias e entre outros. Eu uso ele em meu site de modificações para o jogo Need for Speed http://www.nfsfansite.com/. Então, os membros cadastrados podem enviar suas modificações para mim.
Obs.: Para o plugin entender que apenas os usuários cadastrados podem enviar arquivos, vc tem que mexer nos código de formulário.
Abra o arquivo submission-form.php (wp-content\plugins\user-submitted-posts\views) e procure por este trecho que começa na linha 16:
<?php if ($settings[‘usp_name’] == ‘show’) { ?>
<li class=”usp_name”>
<label for=”user-submitted-name” class=”usp_label”><?php _e(‘Your Name’); ?></label>
<div>
<input class=”usp_input” type=”text” name=”user-submitted-name” id=”user-submitted-name” value=”” />
</div>
Troque o trexo acima por:
<?php if ($settings[‘usp_name’] == ‘hidden’) { ?>
<li class=”usp_name”>
<label for=”user-submitted-name” class=”usp_label”><?php _e(‘Your Name’); ?></label>
<div>
<input class=”usp_input” type=”text” name=”user-submitted-name” id=”user-submitted-name” value=”<?php $user_info = get_userdata(1);
echo ” . $user_info->user_login . “\n”;
?>” />
</div>
O que fiz acima, é para o formulário “Nome” não aparecer na página de envio, mas, que enviar o arquivo, será o membro cadastrado que está logado no site.
Agora vamos “esconder” o conteúdo da página de envio para quem não é membro ou não está logado no site. Assim, apenas cadastrados podem enviar conteúdo para você.
No mesmo arquivo submission-form.php, é o código que deve usar:
<?php if ( is_user_logged_in() ) { ?>
AQUI VOCÊ COLOCA TODO O CÓDIGO PHP DO ARQUIVO submission-form.php
<?php } else { ?>
E AQUI VOCÊ COLOCA A MENSAGEM QUE QUER EXIBIR PARA QUEM NÃO ESTÁ LOGADO NO SITE.
<?php } ?>
Depois disso é só salvar o arquivo submission-form.php e pronto!
Tudo feito!