Поддержка Проблемы и решения Не могу получить url первой img у нового поста

  • Доброго времени суток.

    Намудрил такой код.

    add_action('transition_post_status', 'send_new_post', 10, 3);
    
    function send_new_post($new_status, $old_status, $post) {
        
        $pubpost = get_post_time();
        $uppost = get_post_modified_time();
        $idpost = get_the_ID();
        $valuem = get_post_meta( $idpost, "anonsing", true );
    
    function get_post_image_first() {
    global $post, $posts;
    $first_img = '';
    ob_start();
    ob_end_clean();
    if(preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches)){
    $first_img = $matches [1] [0];
    return $first_img;
    }
    else {
    $first_img = "http://xxx/post-default.png";
    return $first_img;
    } };
        
        
      if('publish' === $new_status && 'publish' === $old_status && $post->post_type === 'post') {
          
    
        if ($pubpost == $uppost && get_post_meta($idpost, "anonsing", true)) {
    // должно срабатывать если пост был был реопубликован (у него дата создания и дата изменения полностью совпадает (плагин републикации так делает), ранее пост был в статусе опубликован, наличествует ключ под именем "anonsing" (значение ключа значение не имеет))
        }  
    
      }
      
        if('publish' === $new_status && 'publish' === $old_status && $post->post_type === 'post') {
         
       if ('now' == $valuem) {
    // должно срабатывать если пост был был отредактирован (ранее пост был в статусе опубликован, наличествует значение ключа "anonsing", которое должно быть "now")
        }  
    
      }
      
        if('publish' === $new_status && 'publish' !== $old_status && $post->post_type === 'post') {
            if ('express' == $valuem) {
    // должно срабатывать если пост был был создан и сразу опубликован (ранее пост был не был в статусе опубликован, наличествует значение ключа "anonsing", которое должно быть "express")
    
    ...
    	$imglink = get_post_image_first(); // отдаёт post-default.png, а надо ту, что в посте. 
    ...
    
    }
            }
      
    }

    не могу получить первую картинку (отдаёт post-default.png) если пост был создан и сразу опубликован (аналогично не будет работать, если пост отредактирован, а именно добавлена картинка, которая выше всех). Как мне получить эту первую картинку всё таки? Видимо в момент сохранения поста она ещё отсутствует в посте, а код уже срабатывает.

    Делаю для пуш отправки, чтобы сообщение повторно не отправлялось, оттого так намудрил с логикой.

  • Тема «Не могу получить url первой img у нового поста» закрыта для новых ответов.