

投稿タグを、特定の複数のカスタムフィールドの値に変更したいと考えています。  
一つのカスタムフィールドだけをタグとして反映させることはできましたが、複数のカスタムフィールドの値をそれぞれタグとして反映させることができません。

これまで試したコードはこちらです

[code]

    <?php
    global $post;
    $post_id = $post->ID; 
    $tags[] = get_post_meta($post_id, 'aaaaa', $single);
    $tags[] = get_post_meta($post_id, 'bbbbb', $single);
    $tags[] = get_post_meta($post_id, 'ccccc', $single);
    $tags = array_unique( array_filter( $tags ) ); // here, adding array_filter to remove empty get_post_meta results
    wp_set_post_tags( $post_id, $tags, false );
    ?>
    
[/code]

上記のコードの場合、一番上に記載したカスタムキーだけがタグに反映されました。

* * *
[code]

    global $post;
    $post_id = $post->ID; 
    $tags[] = get_post_meta($post_id, 'aaaaa', $single);
    $tags[] = get_post_meta($post_id, 'bbbbb', $single);
    $tags[] = get_post_meta($post_id, 'ccccc', $single);
    $tags = array_unique( array_filter( $tags ) ); // here, adding array_filter to remove empty get_post_meta results
    foreach($tags as $tag){
        wp_set_post_tags( $post_id, $tag, false );
    }
    
[/code]

こちらのコードも一番上のカスタムキーだけがタグとして反映されました。

* * *
[code]

    <?php
    global $post;
    $post_id = $post->ID;
    
    $tags = get_post_meta($post_id, 'aaaaa', $single);
    if (!empty($tag) ) { wp_add_post_tags( $post_id, $$tag ); }
    
    $tags = get_post_meta($post_id, 'bbbbb', $single);
    if (!empty($tag) ) { wp_add_post_tags( $post_id, $$tag ); }
    
    $tags = get_post_meta($post_id, 'ccccc', $single);
    if (!empty($tag) ) { wp_add_post_tags( $post_id, $$tag ); }
    
    wp_set_post_tags( $post_id, $tags, false );   
    
    ?>
    
[/code]

上記のコードでは、カスタムフィールドの値はいずれもタグとして反映されませんでした。


CC BY-SA 4.0
2020-02-16T21:10:00.360
63097
2020-02-17T02:20:24.167
2020-02-17T00:02:41.480
3060
35952
question
wordpress
投稿タグをカスタムフィールドの値で上書きしたい


文字列で返ってきてないのが原因だったようで、第三引数trueであっさりうまくいきました！


CC BY-SA 4.0
2020-02-17T02:20:24.167
63100
2020-02-17T02:20:24.167
35952
63097
answer