Как получить идентификатор сообщения с рычагами publish_post, new_to_publish, и т.д.

У меня есть два плагина, каждый использует функцию wp_insert_post (), другой имеет код как это:

add_action('future_to_publish', 'myFunc', 10, 1);
add_action('new_to_publish', 'myFunc', 10, 1);
add_action('draft_to_publish', 'myFunc', 10, 1);

function myFunc( $postID ) {

}

Когда первый плагин выполняет wp_insert_post (), $postID всегда пуст. Если я использую рычаг "publish_post" и обновление нажатия затем, $postID действительно имеет значение, поэтому что я делаю неправильно?

0
29.04.2012, 04:44
3 ответа

Использовать wp_insert_posts():

$postId = wp_insert_post($args);
if(!$postId){
echo "Your post is not inserted that's why you've no post id :p"
}
0
19.02.2020, 23:38
  1. Прочитайте кодекс,
  2. Посмотрите на функцию в базовом файле,
  3. Измените свой код следующим образом:

    function myFunc( $post ) {
    
        $postID = $post->ID;
    
    }
    

Сообщение transistion не отправляет идентификатор сообщения, оно отправляет полный объект сообщения. Иногда простое die(var_dump($postID)); (или независимо от того, что Вы используете в качестве параметра), помогает узнать то, что будет, отправляют к обратному вызову. Если Вы не знаете, сколько параметры, отправляют к обратному вызову, помещают a die(var_dump(func_get_args())); в первой строке Вашего обратного вызова.

4
19.02.2020, 23:38
function myFunc( $post ) {
    global $post;
    $myPostId = $post->ID;

    //your function here

}

Для получения значения $postID Вы просто вставляете global $post выражение в Вашей функции. Это работало на меня.

1
19.02.2020, 23:38
  • 1
    Это, кажется, не отвечает на вопрос. –  s_ha_dum 06.06.2013, 00:59
  • 2
    "Этот ответ был автоматически отмечен как низкое качество из-за его длины и содержания", которое я уверен, что Вы не хотите. Объясните, что делает Ваш код и почему он решил бы проблему. –  s_ha_dum 06.06.2013, 01:01
  • 3
    Это отвечает на вопрос. ПРОСТО СЧИТАЙТЕ ВЕСЬ ИСХОДНЫЙ ВОПРОС: "$postID всегда пуст". Для получения значения $postID Вы просто вставляете глобальное выражение $post в свою функцию. @s_ha_dum, я ценю Ваш ответ, но Вы становитесь слишком рьяными (не ревнивый) в Вашем согласном для помощи –  Val 08.06.2013, 10:03
  • 4
    См. ответ @Ralf912 –  s_ha_dum 08.06.2013, 15:16
  • 5
    @Ralf912 это не завершено! НЕОБХОДИМО назвать глобальное global $post; если это - сменный файл - который это. Снова, СЧИТАЙТЕ долбаный вопрос, это не покер для чтения плееров. –  Val 08.06.2013, 18:19

Теги

Похожие вопросы