web-dev-qa-db-ja.com

WordPressの投稿タグとカスタムフィールド

WordPressにカスタムフィールドを使用したサイトがありますが、そのカスタムフィールドを自動的にポストタグとして使用したいと思います。

誰もが何か考えがありますか?

ありがとう。

1
shah parthvi

古いカスタムフィールドを変換するには、起動時にすべての投稿をカスタムフィールド名で取得し、便利なwp_set_post_termsを持つタグに変換するプラグインを作成できます。

最初にあなたのフィールド名と投稿タイプでいくつかの定数を設定します。

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

それからアクティベーションフック関数:

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

そして最後に、save_postにフックしてカスタムフィールドの値があるかどうかを確認できます。もしそうなら、それがすでに用語ではないことを確認し、そうでなければそれを挿入してください。

これがあなたが必要としているものなのか、それとも一回限りの変換なのかわからない。

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

プラグインとして

3
chrisguitarguy

私が知っている限りでは、これは「箱から出して」自動的に行うことは不可能です。素早いグーグルで、あなたに代わって仕事をするプラグインは現在ないようです。

しかし、これを行うためのプラグインを作成できなかった理由はわかりません。投稿が保存/更新されるたびに実行される "save_post"フックを使用する必要があります。カスタムフィールドを確認してタグとして適用します。

このフックに関するドキュメントはまばらですが、ここで言及されています。

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

1
chrismou

投稿タグとしてオールインワンSEOプラグインからキーワードを自動的に追加する方法を尋ねる誰かから、私はしばらく前に同様の質問に出会いました(http://www.vidalquevedo.com/how-to-add-tags/#li - コメント - 62)

私があなたの質問を見た後、私は自分が書いたスクリプトを使ってカスタムフィールドの値も自動的にポストタグとして追加するように修正しました。

これがスクリプトと投稿へのリンクです。 http://www.vidalquevedo.com/wordpress-how-to-automatically-convert-custom-fields-to-post-tags/

ありがとう、そしてそれが役立つかどうか私に教えてください!

Vq.

0
Vidal Quevedo