Impedire a WordPress di abbreviare gli slug lunghi nell'area di amministrazione
Nelle pagine di modifica degli articoli, quando uno slug supera un certo numero di caratteri, WordPress lo abbrevia con i puntini di sospensione (...
). Ad esempio, se il mio slug è voglio-essere-in-grado-di-vedere-questo-slug
, appare nella pagina di modifica in questo modo:
Permalink:
http://esempio.com/2012/voglio-essere...-vedere-questo-slug/
[ Modifica ]
Posso impedire a WordPress di farlo?
Mi piacerebbe poter vedere (e copiare) un URL completo senza oscuramento, quindi sono davvero curioso di scoprire come disabilitare questa funzionalità.

C'è un filtro alla fine della funzione: 'get_sample_permalink_html'
. Agganciati a questo e sostituisci semplicemente la forma abbreviata con quella completa.
<?php # -*- coding: utf-8 -*-
/* Plugin Name: T5 Unabridge Permalink Slug */
add_filter( 'get_sample_permalink_html', 't5_unabridge_sample_permalink', 10, 2 );
/**
* Sostituisce il permalink abbreviato con la sua forma completa.
*
* @param string $sample HTML del permalink
* @param int $id ID del post
* @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
);
}
Risultato
Titolo del post: Questo è un titolo di post piuttosto lungo. WordPress lo abbrevierebbe di default, ma il nostro bel plugin lo impedisce.

Non è possibile tramite un filtro o un action hook. WordPress taglia le stringhe in modo rigido nel core. Vedi wp-admin/includes/post.php
riga 1110
in 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;
}
}
Puoi aprire un ticket sul Trac di WordPress per includere un filtro.

Come nota @bueltge nella sua risposta, attualmente non esiste un filtro o un hook che permetta questo. Ecco l'hack che ho utilizzato per prevenire l'abbreviazione ...
.
Nel file wp-admin/includes/post.php
, trova questa riga (in Wordpress 3.4.1, è la riga 1117):
$post_name_html = '<span id="editable-post-name" title="' . $title . '">' . $post_name_abridged . '</span>';
Modificala in questo modo:
// Cambiato $post_name_abridged in $post_name per prevenire l'abbreviazione "..." degli slug lunghi
$post_name_html = '<span id="editable-post-name" title="' . $title . '">' . $post_name . '</span>';
Ovviamente, poiché questo modifica un file del core, la modifica verrà sovrascritta ogni volta che una nuova versione di Wordpress aggiornerà questo file.
Se qualcuno può suggerire un modo per ottenere questo risultato senza modificare i file del core, lo preferirei sicuramente a questa soluzione.
