web-dev-qa-db-fra.com

Tag WordPress post et champ personnalisé

J'ai le site dans WordPress où j'ai utilisé les champs personnalisés, mais maintenant je veux utiliser ce champ personnalisé comme balise de publication automatiquement.

Quelqu'un peut-il avoir une idée?

Merci.

1
shah parthvi

Pour convertir les anciens champs personnalisés, vous pouvez écrire un plug-in qui, lors de l'activation, récupère tous les articles avec votre nom de champ personnalisé et les convertit en balises avec le pratique wp_set_post_terms.

Commencez par configurer quelques constantes avec vos noms de champs et votre type de publication.

<?php
/**
 * CHANGE THIS! what is your custom field's name?
 */
define( 'WPSE29498_FIELD', 'custom_field_name' );


/**
 * CHANGE THIS! what post type?
 */
define( 'WPSE29498_TYPE', 'post' );

Ensuite, la fonction crochet d'activation:

<?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 );
        }
    }
}

Et enfin, vous pouvez vous connecter à save_post et voir si la valeur du champ personnalisé est là. Si c'est le cas, assurez-vous que ce n'est pas déjà un terme, puis insérez-le s'il ne l'est pas.

Je ne sais pas si c'est quelque chose dont vous aviez besoin ou une conversion unique.

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

        // if our term is already there, bail
        if( in_array( $meta, $terms ) ) return;

        // add the term if not
        wp_set_post_terms( $post_id, $meta, 'post_tag', true );
    }
}

En tant que plugin .

3
chrisguitarguy

Autant que je sache, ce n'est pas possible de faire automatiquement "out of the box". Un rapide Google et on dirait qu’il n’existe actuellement aucun plugin qui fera le travail pour vous.

Cependant, je ne vois aucune raison pour laquelle un plugin n'aurait pas pu être écrit pour le faire. Vous devez utiliser le crochet "save_post", qui s'exécutera à chaque fois qu'un message est enregistré/mis à jour, vérifiez le champ personnalisé et appliquez-le en tant que balise.

La documentation sur ce crochet est rare, mais elle est mentionnée ici:

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

1
chrismou

Il y a quelque temps, j'ai rencontré une question similaire de quelqu'un qui demandait comment ajouter automatiquement des mots-clés du plug-in SEO complet en tant qu'étiquettes de publication (http://www.vidalquevedo.com/how-to-add-tags/#li -comment-62)

Après avoir lu votre question, j'ai pris ce script que j'ai écrit et je l'ai modifié pour ajouter automatiquement des valeurs de champ personnalisées en tant que balises de publication.

Voici le lien vers le script et la publication: http://www.vidalquevedo.com/wordpress-how-to-automatically-convert-custom-fields-to-post-tags/

Merci, et s'il vous plaît laissez-moi savoir si cela aide!

Vq.

0
Vidal Quevedo