Preciso criar uma (s) meta (s) caixa (s) de postagem personalizada (s) para o meu tipo de postagem personalizado "Slideshow" (esse tipo de postagem já foi criado). Cada metabox retém o conteúdo de cada slide e o salva nos campos personalizados correspondentes. Cada metabox deve conter os seguintes campos:
- Título (campo de texto)
- Imagem (um campo de texto para o URL img ou, idealmente, uma lista suspensa mostrando miniaturas das imagens anexadas à postagem)
- Código de incorporação (área de texto)
- Descrição (wysiwyg)
- Ocultar o slide (marque a caixa de seleção para ocultar temporariamente um slide sem excluí-lo)
- Excluir slide (botão que exclui o conteúdo dos meta-campos de postagem que foram preenchidos por este slide)
Eu também gostaria de um botão em algum lugar que me permita "Adicionar um slide", para que, ao ser clicado, adicione outra Meta Box Personalizada "Slide", que é uma duplicata da primeira, mas que adicione um número incremental a cada meta campo personalizado da postagem. Atualmente, tenho apenas 15 metaboxes e o modelo Slideshow é configurado de uma maneira que, se apenas 5 metaboxes forem preenchidos, apenas 5 slides serão exibidos.
Por fim, gostaria de poder reordenar os slides, seja por "Arrastar e soltar" ou por outro campo de texto no qual possa digitar o número do pedido.
Cheguei quase onde precisava com o plug - in "More Fields" e alguma ajuda de código da Rarst. Com o plug-in "Mais campos", tenho os seguintes campos em cada metabox:
- Título (campo de texto)
- Imagem (uma lista suspensa das imagens anexadas à postagem)
- Código de incorporação (área de texto)
- Descrição (wysiwyg)
- Ocultar o slide (marque a caixa de seleção para ocultar temporariamente um slide sem excluí-lo)
Aqui está uma captura de tela de como eu o configurei através do plug-in "Mais campos":
O problema é que não há como excluir um slide depois que ele é criado porque "Mais campos" não é usado em <?php delete_post_meta($post_id, $key, $value); ?>
nenhum lugar. O outro problema com o plug-in é que ele não é confiável demais e quebras com frequência nas atualizações.
Consegui implementar uma solução semelhante com meus próprios metaboxes personalizados que incluem:
- Título (campo de texto)
- Imagem (campo de texto para o URL img)
- Código de incorporação (área de texto)
- Descrição (área de texto)
- Ocultar o slide (marque a caixa de seleção para ocultar temporariamente um slide sem excluí-lo)
Com esta implementação, não consigo obter os vários campos do TinyMCE para funcionar ou a caixa suspensa da imagem. O código TinyMCE parece funcionar até que eu adicionar o código que criar cópias incrementais do primeiro METABOX altura em que eu recebo esse direito erro acima do campo onde os botões TinyMCE deve ser: Warning: array_push() [function.array-push]: First argument should be an array...
.
Além disso, agora eu estou contando com meus escritores para saberem colocar um vídeo ou uma imagem para cada slide e tudo bem, mas pode ser melhor ter um botão de opção que permita que eles escolham qual o slide (provavelmente o padrão é imagem) que está vinculada a uma instrução de exibição condicional no modelo de apresentação de slides.
Estou lidando com uploads de imagens através da caixa "Imagem em destaque" na barra lateral, embora não me importe com uma metabox personalizada que simplesmente diga "Upload Images" na parte superior do painel de gravação.
Por fim, estou procurando uma apresentação de slides semelhante a esta: http://www.nytimes.com/slideshow/2010/08/10/science/20100810angier-1.html . Quero que o meu também possa ter um vídeo como conteúdo no slide, em vez de uma imagem. Preciso de um painel de administração intuitivo e fácil de usar para meus escritores (eles não são muito conhecedores de tecnologia e não são confiáveis usando html e / ou códigos de acesso). Caso não esteja claro no exemplo, cada slide deve gerar uma nova visualização de página.
A reordenação do Drag'n'Drop não é uma alta prioridade, mas seria legal. Eu encontrei um plugin que lida com isso muito bem: SlideDeck . Infelizmente, o plug-in não se adequa às minhas necessidades, mas o modo como eles lidam com a ordenação dos slides é bastante liso. É um metabox separado na barra lateral que permite arrastar os slides na ordem que desejar. Também é assim que você adiciona slides, clicando no botão "Adicionar slide", que adiciona outra Metabox de slides ao painel de gravação. Aqui está uma captura de tela:
Você também pode ver mais capturas de tela em ação no repositório wordpress .
Aqui está todo o meu código:
As funções que configuram meu tipo de postagem de apresentação de slides e paginação de apresentação de slides: http://loak.pastebin.com/g63Gf186
O código original de DeluxeBloggingTips.com (DBT) do qual baseei minhas Metaboxes: http://loak.pastebin.com/u9YTQrxf
A versão do código DBT que eu modifiquei para fornecer versões incrementais da mesma metabox: http://loak.pastebin.com/WtxGdPrN
Uma versão modificada do código DBT que Chris Burbridge criou para permitir várias instâncias do TinyMCE: http://loak.pastebin.com/Mqb3pKhx Com esse código, os TinyMCEs funcionam.
Minha modificação do código de Burbridge que tenta incorporar meu incremento e um campo que permite escolher a imagem em uma lista suspensa de todas as imagens anexadas à postagem: http://loak.pastebin.com/xSuenJTK Nesta tentativa, o TinyMCE está quebrado e o menu suspenso não funciona.
Provavelmente isso não importa, mas caso você esteja se perguntando, aqui está o código que eu uso para extrair o código de incorporação da meta personalizada da postagem, redimensioná-la e inseri-la na postagem: http://loak.pastebin.com / n7pAzEAw
Esta é uma versão editada da pergunta original para refletir o status atual do projeto e responde às perguntas postadas nos comentários. Obrigado a Chris_O por colocar a recompensa nisso. Além disso, obrigado a Rarst e Justin por me ajudarem com muito disso no fórum ThemeHybrid.com . Passei horas e horas nisso e estou preso (passei algumas horas sozinho nessa questão). Qualquer ajuda seria muito apreciada.