Come utilizzare un campo personalizzato come tag di post in WordPress

26 set 2011, 15:10:22
Visualizzazioni: 3.24K
Voti: 1

Ho un sito in WordPress dove ho utilizzato i campi personalizzati, ma ora vorrei usare quel campo personalizzato come tag del post automaticamente.

Qualcuno ha qualche idea?

Grazie.

0
Tutte le risposte alla domanda 3
1

Per convertire i vecchi campi personalizzati, puoi scrivere un plugin che, all'attivazione, recupera tutti i post con il nome del tuo campo personalizzato e li converte in tag con la comoda funzione wp_set_post_terms.

Per prima cosa imposta alcune costanti con i nomi dei campi e il tipo di post.

<?php
/**
 * CAMBIA QUESTO! qual è il nome del tuo campo personalizzato?
 */
define( 'WPSE29498_FIELD', 'custom_field_name' );


/**
 * CAMBIA QUESTO! quale tipo di post?
 */
define( 'WPSE29498_TYPE', 'post' );

Poi la funzione dell'hook di attivazione:

<?php
register_activation_hook( __FILE__, 'wpse29498_field_to_tag' );
function wpse29498_field_to_tag()
{
    $posts = get_posts(
        array(
            'post_type'     => WPSE29498_TYPE,
            'post_status'   => array( 'publish', 'draft', 'pending', 'future' ),
            'numberposts'   => -1,
            'meta_key'      => WPSE29498_FIELD
        )
    );

    if( empty( $posts ) ) return;

    foreach( $posts as $p )
    {
        if( $meta = get_post_meta( $p->ID, WPSE29498_FIELD, true ) )
        {
            wp_set_post_terms( $p->ID, $meta, 'post_tag', true );
        }
    }
}

Infine, puoi agganciarti a save_post e verificare se il valore del campo personalizzato è presente. Se c'è, assicurati che non sia già un termine, quindi inseriscilo se non lo è.

Non sono sicuro se sia qualcosa di cui hai bisogno o una conversione una tantum.

<?php
add_action( 'save_post', 'wpse29498_save_post' );
function wpse29498_save_post( $post_id )
{
    if( $meta = get_post_meta( $post_id, WPSE29498_FIELD, true ) )
    {
        // ottieni il tag corrente del post
        $terms = wp_get_object_terms( $p->ID, 'post_tag', 'name' );

        // se il nostro termine è già presente, esci
        if( in_array( $meta, $terms ) ) return;

        // aggiungi il termine se non presente
        wp_set_post_terms( $post_id, $meta, 'post_tag', true );
    }
}

Come plugin.

2 dic 2011 22:00:44
Commenti

Per favore, è difficile immaginare lo stesso per la conversione in una categoria invece di un tag?

jjj jjj
9 giu 2015 22:55:51
0

Per quanto ne so, questo non è possibile fare automaticamente "fuori dalla scatola". Una rapida ricerca su Google e sembra che attualmente non ci siano plugin che facciano questo lavoro per te.

Tuttavia, non vedo alcun motivo per cui non si possa scrivere un plugin per farlo. Dovrai utilizzare l'hook "save_post", che verrà eseguito ogni volta che un articolo viene salvato/aggiornato, controllare il campo personalizzato e applicarlo come tag.

La documentazione su questo hook specifico è scarsa, ma viene menzionato qui:

http://codex.wordpress.org/Plugin_API/Action_Reference

26 set 2011 15:29:42
1

Mi sono imbattuto in una domanda simile tempo fa da parte di qualcuno che chiedeva come aggiungere automaticamente le parole chiave dal plugin All-in-one SEO come tag dei post (http://www.vidalquevedo.com/how-to-add-tags/#li-comment-62)

Dopo aver visto la tua domanda, ho preso quello script che ho scritto e lo ho modificato per aggiungere automaticamente anche i valori dei campi personalizzati come tag dei post.

Ecco il link allo script e al post: http://www.vidalquevedo.com/wordpress-how-to-automatically-convert-custom-fields-to-post-tags/

Grazie, e fammi sapere se ti è stato utile!

Vq.

26 set 2011 20:00:14
Commenti

Penso che la tua soluzione sia aggiungere le parole chiave di 'All in one seo' come tag come ho letto su vidalquevedo.com/how-to-add-tags#comment-123 Non sto usando all in one SEO, inserisco semplicemente un campo personalizzato nel post e voglio che siano i tag per quel post.

shah parthvi shah parthvi
1 dic 2011 10:31:53