Как запретить Wordpress сокращать длинные ЧПУ (URL) в админке
На страницах редактирования записей, когда ЧПУ (URL) превышает определенное количество символов, WordPress сокращает его, добавляя многоточие (...
). Например, если мой ЧПУ выглядит как i-want-to-be-able-to-see-this-slug
, на странице редактирования он отображается так:
Постоянная ссылка:
http://example.com/2012/i-want-to-be-a...-see-this-slug/
[Править]
Можно ли запретить WordPress делать это?
Мне важно видеть (и копировать) полный URL без сокращений, поэтому я очень хочу узнать, как отключить эту функцию.

В конце функции есть фильтр: 'get_sample_permalink_html'
. Подключитесь к нему и просто замените сокращенную форму на полную.
<?php # -*- coding: utf-8 -*-
/* Plugin Name: T5 Полный ЧПУ (не сокращенный) */
add_filter( 'get_sample_permalink_html', 't5_unabridge_sample_permalink', 10, 2 );
/**
* Заменяет сокращенный ЧПУ на его полную форму.
*
* @param string $sample HTML ЧПУ
* @param int $id ID записи
* @return string
*/
function t5_unabridge_sample_permalink( $sample, $id )
{
$link = get_sample_permalink( $id );
$s1 = '<span id="editable-post-name" ';
$s2 = '</span>';
return preg_replace(
'~' . $s1 . '([^>]*)>([^<]*)' . $s2 . '~Ui',
$s1 . '$1>' . $link[1] . $s2,
$sample
);
}
Результат
Название записи: Это довольно длинное название записи. WordPress по умолчанию сократит его, но наш удобный плагин предотвращает это.

Это невозможно сделать через фильтр или хук действия. WordPress жестко обрезает строки в ядре. Смотрите файл wp-admin/includes/post.php
, строка 1110
в WP 3.4 alpha.
if ( function_exists('mb_strlen') ) {
if ( mb_strlen($post_name) > 30 ) {
$post_name_abridged = mb_substr($post_name, 0, 14). '…' . mb_substr($post_name, -14);
} else {
$post_name_abridged = $post_name;
}
} else {
if ( strlen($post_name) > 30 ) {
$post_name_abridged = substr($post_name, 0, 14). '…' . substr($post_name, -14);
} else {
$post_name_abridged = $post_name;
}
}
Вы можете создать тикет в Trac WordPress, чтобы добавить фильтр.

Как отмечает @bueltge в своем ответе, в настоящее время нет фильтра или хука действия, который бы это позволял. Вот мой хак, чтобы предотвратить сокращение ...
.
В файле wp-admin/includes/post.php
найдите эту строку (в WordPress 3.4.1 это строка 1117):
$post_name_html = '<span id="editable-post-name" title="' . $title . '">' . $post_name_abridged . '</span>';
Измените её на:
// Изменили $post_name_abridged на $post_name, чтобы предотвратить сокращение "..." длинных ЧПУ
$post_name_html = '<span id="editable-post-name" title="' . $title . '">' . $post_name . '</span>';
Конечно, поскольку это изменение файла ядра, оно будет перезаписано при обновлении WordPress до новой версии.
Если кто-то может предложить способ добиться этого без изменения ядра, я бы конечно предпочел его этому решению.
