Cum să previnem WordPress să trunchieze URL-urile lungi în panoul de administrare
Pe paginile de editare a articolelor, când un URL depășește un anumit număr de caractere, WordPress le trunchiază cu puncte de suspensie (...
). De exemplu, dacă URL-ul meu este i-want-to-be-able-to-see-this-slug
, acesta apare pe pagina de editare astfel:
Legătură permanentă:
http://example.com/2012/i-want-to-be-a...-see-this-slug/
[ Editare ]
Pot să împiedic WordPress să facă acest lucru?
Doresc să pot vedea (și copia) un URL complet fără trunchiere, așa că doresc să aflu cum să dezactivez această funcționalitate.

Există un filtru la sfârșitul funcției: 'get_sample_permalink_html'
. Conectați-vă la acesta și înlocuiți forma scurtată cu cea completă.
<?php # -*- coding: utf-8 -*-
/* Plugin Name: T5 Unabridge Permalink Slug */
add_filter( 'get_sample_permalink_html', 't5_unabridge_sample_permalink', 10, 2 );
/**
* Înlocuiește permalink-ul scurtat cu forma sa completă.
*
* @param string $sample HTML-ul permalink-ului
* @param int $id ID-ul postării
* @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
);
}
Rezultat
Titlul postării: Acesta este un titlu de postare destul de lung. WordPress l-ar scurta în mod implicit, dar drăguțul nostru plugin previne acest lucru.

Nu este posibil prin intermediul unui filtru sau al unui action hook. WordPress taie șirurile de caractere direct în nucleu. Vezi wp-admin/includes/post.php
linia 1110
în 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;
}
}
Poți deschide un tichet pe Trac-ul WordPress pentru a include un filtru.

După cum notează @bueltge în răspunsul său, în prezent nu există niciun filtru sau hook de acțiune care să permită acest lucru. Iată hack-ul pe care l-am făcut pentru a preveni abrevierea cu ...
.
În fișierul wp-admin/includes/post.php
, găsiți această linie (în WordPress 3.4.1, este linia 1117):
$post_name_html = '<span id="editable-post-name" title="' . $title . '">' . $post_name_abridged . '</span>';
Modificați-o astfel:
// Schimbat $post_name_abridged în $post_name pentru a preveni abrevierea "..." a slug-urilor lungi
$post_name_html = '<span id="editable-post-name" title="' . $title . '">' . $post_name . '</span>';
Desigur, deoarece aceasta modifică un fișier din nucleu, modificarea va fi suprascrisă de fiecare dată când o nouă versiune de WordPress actualizează acest fișier.
Dacă cineva poate recomanda o metodă care să nu implice modificarea fișierelor de nucleu pentru a obține acest lucru, aș folosi cu siguranță acea soluție în locul acesteia.
