Eu estou olhando para conseguir algo que eu imaginei seria bastante simples de realizar, mas parece que não há exemplos reais disponíveis para alcançar minhas necessidades.
Essencialmente eu tenho um tipo de post personalizado de "Artigos" para este tipo de postagem personalizada Eu tenho uma nova taxonomia que eu registrei que foi criada para que publicações de origem possam ser adicionadas.
Meu objetivo era poder adicionar um artigo por meio desse tipo de postagem personalizado e, em seguida, selecionar a "publicação de origem" aplicável na lista de termos para poder exibir de onde veio o artigo.
Agora, o problema que estou tendo parece ser simples ... Tudo que estou tentando fazer é adicionar alguns campos adicionais à página onde você pode inserir cada termo de taxonomia. Neste caso, gostaria de adicionar um campo para "URL" e incluir uma imagem para cada fonte, para que eu possa adicionar um logotipo.
Então a questão aqui é ... como eu iria adicionar um campo adicional a cada termo?
Eu estou supondo que o wordpress não permite essa funcionalidade ingenuamente que de alguma forma o campo "descrição" poderia ser utilizado como um tipo de área de campos personalizados e, portanto, que os dados podem ser armazenados lá.
Então, eu estou tentando, claro, extrair os dados e exibi-los.
Consegui personalizar os títulos das colunas de taxonomia caso alguém tenha interesse, da mesma forma que as colunas podem ser modificadas para tipos de postagem personalizados como este:
// CUSTOM TAXONOMY COLUMNS FOR CONTENT SOURCES
add_filter("manage_edit-content_sources_columns", 'content_sources_columns');
function content_sources_columns($content_sources_columns) {
$new_columns = array(
'cb' => '<input type="checkbox" />',
'name' => __('Name'),
// 'source_image' => '',
'description' => __('URL'),
'slug' => __('Slug'),
'posts' => __('Posts')
);
return $new_columns;
}
Oi @ NetConstructor.com :
Eu escrevi isso no mês passado para alguém e pode abordar o que você está procurando. É um exemplo que você modificaria, não uma solução completa pronta para uso:
<?php
/*
* Example code showing how to hook WordPress to add fields to the taxonomny term edit screen.
*
* This example is meant to show how, not to be a drop in example.
*
* This example was written in response to this question:
*
* http://lists.automattic.com/pipermail/wp-hackers/2010-August/033671.html
*
* By:
*
* Mike Schinkel (http://mikeschinkel.com/custom-wordpress-plugins/)
*
* NOTE:
*
* This could easily become a plugin if it were fleshed out.
* A class with static methods was used to minimize the variables & functions added to the global namespace.
* wp_options was uses with one option be tax/term instead of via a serialize array because it aids in retrival
* if there get to be a large number of tax/terms types. A taxonomy/term meta would be the prefered but WordPress
* does not have one.
*
* This example is licensed GPLv2.
*
*/
// These are helper functions you can use elsewhere to access this info
function get_taxonomy_term_type($taxonomy,$term_id) {
return get_option("_term_type_{$taxonomy}_{$term->term_id}");
}
function update_taxonomy_term_type($taxonomy,$term_id,$value) {
update_option("_term_type_{$taxonomy}_{$term_id}",$value);
}
//This initializes the class.
TaxonomyTermTypes::on_load();
//This should be called in your own code. This example uses two taxonomies: 'region' & 'opportunity'
TaxonomyTermTypes::register_taxonomy(array('region','opportunity'));
class TaxonomyTermTypes {
//This initializes the hooks to allow saving of the
static function on_load() {
add_action('created_term',array(__CLASS__,'term_type_update'),10,3);
add_action('edit_term',array(__CLASS__,'term_type_update'),10,3);
}
//This initializes the hooks to allow adding the dropdown to the form fields
static function register_taxonomy($taxonomy) {
if (!is_array($taxonomy))
$taxonomy = array($taxonomy);
foreach($taxonomy as $tax_name) {
add_action("{$tax_name}_add_form_fields",array(__CLASS__,"add_form_fields"));
add_action("{$tax_name}_edit_form_fields",array(__CLASS__,"edit_form_fields"),10,2);
}
}
// This displays the selections. Edit it to retrieve
static function add_form_fields($taxonomy) {
echo "Type " . self::get_select_html('text');
}
// This displays the selections. Edit it to retrieve your own terms however you retrieve them.
static function get_select_html($selected) {
$selected_attr = array('text'=>'','user'=>'','date'=>'','etc'=>'');
$selected_attr[$selected] = ' selected="selected"';
$html =<<<HTML
<select id="tag-type" name="tag-type">
<option value="text"{$selected_attr['text']}>Text</option>
<option value="user"{$selected_attr['user']}>User</option>
<option value="date"{$selected_attr['date']}>Date</option>
<option value="etc" {$selected_attr['etc']}>Etc.</option>
</select>
HTML;
return $html;
}
// This a table row with the drop down for an edit screen
static function edit_form_fields($term, $taxonomy) {
$selected = get_option("_term_type_{$taxonomy}_{$term->term_id}");
$select = self::get_select_html($selected);
$html =<<<HTML
<tr class="form-field form-required">
<th scope="row" valign="top"><label for="tag-type">Type</label></th>
<td>$select</td>
</tr>
HTML;
echo $html;
}
// These hooks are called after adding and editing to save $_POST['tag-term']
static function term_type_update($term_id, $tt_id, $taxonomy) {
if (isset($_POST['tag-type'])) {
update_taxonomy_term_type($taxonomy,$term_id,$_POST['tag-type']);
}
}
}
Espero que ajude.
Acho que salvar metadados/campos extras/campos personalizados de taxonomia personalizados na tabela de opções é algo que acaba com o desempenho do seu site. Como se o seu site fosse pesado (muitos visitantes, muitos hits), então, para um grande número de taxonomia personalizada, a tabela de opções seria enorme. e aumentará o tempo de carregamento da consulta get_option () para outros plugins ou acho que isso prejudicará muito o desempenho. Devemos salvar coisas desnecessárias na tabela de opções ou aumentar as linhas na tabela de opções.
Cheguei neste post na minha busca por provavelmente a mesma coisa, e não muito tempo depois deparei com este plug in: Ultimate Taxonomy Manager . Eu não estou endossando isso ainda, mas eu tentei em um ambiente de teste e acho que ele faz o que você está procurando. Parece um pouco desajeitado ao recuperar os dados, mas isso poderia ser apenas eu e minha compreensão da documentação.
Uma maneira mais simples e fácil seria:
Você está tentando modificar a taxonomia adicionando algo que não é uma taxonomia, que só irá confundir.
Em vez disso, você precisará adicionar uma caixa meta personalizada ao tipo de postagem do artigo e salvar os urls e URLs de imagem em campos personalizados. Em seguida, você usaria o código para adicionar colunas em functions.php para procurar esses campos personalizados na postagem relevante usando get_meta