2013-11-26 2 views
1

Итак, я заметил, что если я проверю мета значение в моей функции save_post, оно будет пустым, что означает, что мета-значение фактически не было введено должность. Глядя на этот код, например,У меня нет доступа к сообщению meta в действии save_post

function order_mirror_create($post_id) { 

    global $post; 

    if($post->ID == ''){ 
      $pid = $post_id; 
    } else { 
      $pid = $post->ID; 
    } 

    $videohost = get_post_meta($pid, 'video_provider', true); 


    if ($videohost == "UploadAnime") { 

     add_post_meta($pid, 'video_display_order', 1, true); 

    } else { 

     add_post_meta($pid, 'video_display_order', $videohost, true); 

    } 

} 

$videohost фактически пустой, так get_post_meta($pid, 'video_provider', true) не возвращает фактическое значение этого мета-поля, так как он не был создан.

Таким образом, в коде выше else всегда работает, поскольку $videohost пуст. Как я могу это исправить? Что следует использовать action, это будет работать таким образом, что мета-почта уже добавлена ​​в сообщение.

ответ

0

Вы должны изменить следующее:

if ($videohost == "UploadAnime") { 

     add_post_meta($pid, 'video_display_order', 1, true); 

    } else { 

     add_post_meta($pid, 'video_display_order', $videohost, true); 

    } 

To:

if ($videohost == "UploadAnime") { 

     update_post_meta($pid, 'video_display_order', 1, true); 

    } else { 

     update_post_meta($pid, 'video_display_order', $videohost, true); 

    } 

Я считаю add_post_meta действительно никогда не работал для меня, в то время как update_post_meta делает.

+1

'update_post_meta' просто вызывает' add_post_meta', когда видит, что мета-поле фактически не создано. В сущности, он никогда не должен фактически обновлять мета-значение когда-либо, поэтому он всегда будет вызывать 'add_post_meta' .... В любом случае' add_post_meta' отлично работает, тот факт, что он добавляет пустые значения, говорит мне, что '$ videohost' ничего не имеет, поэтому оператор else всегда работает. – Maaz

Смежные вопросы