Intereting Posts
Сообщение с пользовательскими постоянными ссылками Пользовательские типы сообщений: довольно поисковые URL и has_archive Как Mysql выбрать список сообщений с meta_values ​​и всех соответствующих категорий? Сортировка сообщений через пользовательские значения таксономии с использованием флажков? Показать сообщение по таксономии и таксономии, если существует Общий кэш W3 – сайт с строками запросов Как создать раскрывающееся меню в виджетах? Изменение структуры permalink сделало javascript cookie неправильно работать Ограничение количества пользователей Как я могу ограничить количество символов, используемых для описания в сетке категорий управления? Установить порядок предметов с помощью wp_nav_menu _ {$ menu-> slug} _items Несколько страниц для сообщений? Показывать только одну запись каждую неделю Поверните галерею коротких штрихов в карусель в WordPress 4.4 Почему панель администратора появляется (на определенных страницах) для не зарегистрированных пользователей?

Как получить чистую постоянную ссылку в черновик?

Когда я использую the_permalink или get_the_permalink в черновом или запланированном сообщении, предоставленный URL-адрес не является «окончательной» постоянной ссылкой – это версия « ?p=xxxxx .

Как я могу получить финальную, «чистую» постоянную ссылку, чтобы отображаться в черновом или запланированном сообщении?

Я мог бы сделать что-то, связанное с $post->post_name , но мне также нужен этот путь, и это зависит от типа post и типа postlink. Существует ли «универсальный» способ сделать это?

Solutions Collecting From Web of "Как получить чистую постоянную ссылку в черновик?"

Это немного «взломанный», но когда вы вызываете get_permalink и вам нужна постоянная ссылка на черновик, предоставите клон вашего объекта post с заполненными данными:

 global $post; if ( in_array( $post->post_status, array( 'draft', 'pending', 'auto-draft' ) ) ) { $my_post = clone $post; $my_post->post_status = 'publish'; $my_post->post_name = sanitize_title( $my_post->post_name ? $my_post->post_name : $my_post->post_title, $my_post->ID ); $permalink = get_permalink( $my_post ); } else { $permalink = get_permalink(); } 

Поскольку редактор отображает прогнозируемую постоянную ссылку для редактора slug, у него должен быть некоторый способ понять это. От взгляда на источник, который обрабатывается get_sample_permalink_html() и get_sample_permalink() .

Поскольку нам нужна только ссылка без формы, мы можем переделать ее во что-то вроде:

 function get_draft_permalink( $post_id ) { require_once ABSPATH . '/wp-admin/includes/post.php'; list( $permalink, $postname ) = get_sample_permalink( $post_id ); return str_replace( '%postname%', $postname, $permalink ); } 

Нет уверенности, что он надежный, но отлично работает от быстрого теста. 🙂