Intereting Posts
Как объединить два запроса вместе get_terms не отображает product_cat или любые другие пользовательские таксономии, если указано Получение ссылок на работу по разработке и производству Как подключиться к местному сообщению Изменить положение метабокса в бэкэнде (программно) для конкретной роли Назначение возможностей подписчика для пользовательской роли пользователя Могу ли я доверять пользовательскому вводу в wp_redirect ()? Сообщения отображаются от старого до нового, в порядке возрастания Почему эта функция update_post_meta не удаляет собственное поле? Как разместить карту сайта для каждого сообщения? Где комментарии кодируются при использовании пользовательской темы? цикл по всем пользовательским таксономии для текущего пользовательского типа сообщения и их значений Избранные изображения не отображаются Удаление всех статусов сообщений из пользовательского типа сообщения файл загрузки metoxox

Как печатать текущую глубину почты как уведомление об обновлении?

Мне нужно найти простое условие if, чтобы напечатать текущую послеуровень для родителей как уведомление об обновлении. Следующий код в функции.php не работает, он приводит к «0» для всех сообщений, как для родителей, так и для детей. Может ли кто-нибудь помочь в этом?

global $wpdb; global $post; $id = $post->ID; $depth = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE ID = '".$id."'"); if($depth == '0') { function my_admin_notice() { ?> <div class="updated"> <p><?php _e( 'Depth is 0!', 'my-text-domain' ); ?></p> </div> <?php } add_action( 'admin_notices', 'my_admin_notice' ); } 

Вы должны обернуть свое условие внутри функции, а не функцию внутри условия (это также предотвратит ошибки при запуске кода слишком рано, пока загрузится WordPress).

 function my_admin_notice() { global $wpdb, $post; $depth = $wpdb->get_var( $wpdb->prepare( "SELECT post_parent FROM $wpdb->posts WHERE ID = %d", $post->ID ) ); if ( $depth == '0' ) : ?> <div class="updated"> <p><?php _e( 'Depth is 0!', 'my-text-domain' ); ?></p> </div> <?php endif; } add_action( 'admin_notices', 'my_admin_notice' ); 

Нет необходимости запрашивать идентификатор post parent, когда у вас уже есть объект post.

Вы можете напрямую обращаться к родительскому идентификатору:

 $parent_id = $post->post_parent; 

Но поскольку вы намерены получить «глубину» страницы, вам нужно добавить цикл, пока не дойдете до основного родителя. Текущей страницы для вычисления глубины.

Пример кода:

 function my_admin_notice() { global $post; $parent_id = $post->post_parent; $depth = 0; while ($parent_id > 0) { $parent = get_post($parent_id); $parent_id = $parent->post_parent; $depth++; } ?> <div class="updated"> <p><?php _e("Depth is {$depth}! ", 'my-text-domain'); ?></p> </div> <?php } add_action('admin_notices', 'my_admin_notice');