Проверка - это одиночный() внешний цикл


Как я могу проверить, есть ли идентификатор is_single() вне цикла в плагине?

Когда я пытаюсь это сделать, я всегда получаю фатальную ошибку Код

 add_action('transition_post_status', 'pmc_update_notification',10,3);

function pmc_update_notification($new_status, $old_status, $post) {
 if ( $old_status == 'publish' && $new_status == 'publish' ) {
 $post_id = get_the_ID($post);
  if (is_single($post_id)){
 $post_title = get_the_title($post);
 $post_url = get_permalink($post);
 $message = __('Post updated','pmc').":\n";
 $message .= $post_title . ": " . $post_url;

   // Send notification
   pmc_send($message);
     }
    }
   }
 1
Author: Deniz Celebi, 2014-04-04

1 answers

В вашем примере вы не можете.

Согласно Кодексу,

[is_single()] проверяет, отображается ли одна запись любого типа записи, кроме типов записей вложений и страниц.

Вы пытаетесь использовать его на крючке transition_post_status, который не связан с отображением страницы, и поэтому is_single() не имеет смысла.

Решение

Вместо использования is_single() используйте get_post_type():

if( 'post' == get_post_type( $post ) ) {
    // code goes here
}
 3
Author: Pat J, 2014-04-04 19:42:25