Как установить метки для постов с помощью некоторых мета-ключей? - PullRequest
0 голосов
/ 16 февраля 2020

Я подготовил следующий код для перезаписи тегов записей после нескольких мета-ключей. Теперь он работает только для одного мета-ключа. Как применить его к нескольким мета-ключам?

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

В приведенном выше коде мета-значение мета-ключа aaaaa применяется только как пост-тег, а мета-значение мета-ключа bbbbb и ccccc игнорируется.


После того, как я услышу совет ниже, я тоже попробовал этот код.

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

?>

Затем все теги будут удалены.

Ответы [ 3 ]

0 голосов
/ 16 февраля 2020

Надеюсь, это поможет вам.

    global $post;
    $post_id = $post->ID;
    $array_tags_and_ids = [
        $post_id => ["aaaaa", "bbbbb", "ccccc"]
    ];
    foreach ($array_tags_and_ids as $key => $value) {
        // re-call the value and get only the text value
        $implode_tags_names = implode( ', ', $value );

        // wordpress function
        wp_set_post_tags( $key, $implode_tags_names, true );
}
0 голосов
/ 17 февраля 2020

Я изменил третий аргумент на true (по умолчанию false), и он начал работать!

вот так

global $post;
$post_id = $post->ID;
$tags[] = get_post_meta( $post->ID, 'aaaaa', true );
$tags[] = get_post_meta( $post->ID, 'bbbbb', true );
$tags[] = get_post_meta( $post->ID, 'ccccc', true ); 
$tags = array_unique( array_filter( $tags ) );
wp_set_post_tags($post_id , $tags, false );
0 голосов
/ 16 февраля 2020

Ваш код выглядит правильно, но я предлагаю вам проверить, имеет ли мета-ключ bbbbb и ccccc значение в первом месте. Поэтому попытайтесь отобразить что-то подобное.

Кроме того, дайте этому go и попробуйте добавить один тег за раз. https://developer.wordpress.org/reference/functions/wp_add_post_tags/

Как это:

    <?php
    global $post;
    $post_id = $post->ID; 

    $tag = get_post_meta($post_id, 'aaaaa', $single);
    if (!empty($tag) ) { wp_add_post_tags( $post_id, $$tag ); }

    $tag = get_post_meta($post_id, 'bbbbb ', $single);
    if (!empty($tag) ) { wp_add_post_tags( $post_id, $$tag ); }

    $tag = get_post_meta($post_id, 'ccccc', $single);
    if (!empty() ) { wp_add_post_tags( $post_id, $$tag ); }

    ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...