получить пост мета WordPress не работает в плагине

РЕДАКТИРОВАТЬ: больше кода.

Проблема: я хочу получить мета поста. Он отлично работает для случая updated_post, но не для new_post, и я просто не могу понять, почему ..

Это функция для случаев:

    function userpro_sc_new_post( $new_status, $old_status, $post ) {
global $userpro_social;
$exclude = userpro_sc_get_option('excluded_post_types');
if ($exclude != ''){
$exclude_types = explode(',',$exclude);
} else {
$exclude_types = array('nav_menu_item');
}
if (!in_array($post->post_type, $exclude_types )) {
// new post
if ( $new_status == 'publish' && $old_status != 'publish' ) {
$user = get_userdata($post->post_author);
$userpro_social->log_action( 'new_post', $user->ID, $post->ID, $post->post_title, $post->post_type );
}
// updated post
if ($new_status == 'publish' && $old_status == 'publish' ){
$user = get_userdata($post->post_author);
$userpro_social->log_action( 'update_post', $user->ID, $post->ID, $post->post_title, $post->post_type );
}
}
}

И это код для запуска в случаях:

function log_action($action, $user_id, $var1=null, $var2=null, $var3=null) {
global $userpro, $userpro_social;
$activity = get_option('userpro_activity');
$timestamp = current_time('timestamp');

$status = '';

switch($action){case 'new_post':
$myId = get_post_meta(get_the_ID(), 'wpex_post_video_oembed', true);
$status .= $myId;

break;

case 'update_post':
$myId = get_post_meta(get_the_ID(), 'wpex_post_video_oembed', true);
$status .= $myId;
break;

}

Как я уже сказал, update_post работает, чтобы я мог видеть идентификатор … new_post не работает. Зачем?

Я немного упростил код, но это все та же проблема.

Пожалуйста помоги!

0

Решение

Вы должны знать о трех вещах, прежде чем использовать get_post_meta() в ваших плагинах.

  1. Вы должны объявить глобальные переменные как глобальные, если таковые имеются (например: $wpdb).
  2. Вы должны получить данные поста в $ post_id (например: $post_id = $_POST['postid'];).
  3. Обновите значение настраиваемого поля при необходимости (например: update_post_meta($post_ID, 'video_id', true);).

Любой из вышеперечисленных может быть вашей проблемой. Пожалуйста, обратитесь и попробуйте.

1

Другие решения

global $post;
$avriable_name=get_post_meta($post->ID, 'video_id', true);

Попробуйте приведенный выше код, глобальный пост поможет получить идентификатор для поста. Если вы не удалили его, $ post-> ID будет пустым, а остальные не будут работать.

Пожалуйста, дайте мне знать, если вам нужна дополнительная помощь.

0

Попробуй это:

$myId = (get_post_meta(get_the_ID(), 'wpex_post_video_oembed',true));
0
По вопросам рекламы [email protected]