Cum să previnem WordPress să trunchieze URL-urile lungi în panoul de administrare

27 ian. 2012, 18:34:59
Vizualizări: 1.48K
Voturi: 6

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.

1
Comentarii

editează doar etichetele pentru o legătură mai bună

bueltge bueltge
27 ian. 2012 20:05:38
Toate răspunsurile la întrebare 3
1

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.

Previzualizare permalink nescurtat

Descarcă de pe GitHub.

4 iul. 2012 04:25:11
Comentarii

Salut toscho - am căutat peste tot răspunsul la această întrebare; nu l-am găsit nicăieri din câte știu eu! Mulțumesc mult!!!!

MikeSchinkel MikeSchinkel
15 mar. 2014 07:57:33
0

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). '&hellip;' . 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). '&hellip;' . substr($post_name, -14);
    } else {
        $post_name_abridged = $post_name;
    }
}

Poți deschide un tichet pe Trac-ul WordPress pentru a include un filtru.

27 ian. 2012 19:13:02
1
-4

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.

1 iul. 2012 22:03:48
Comentarii

Nu ar trebui să editați fișierele de bază. Consultați răspunsul lui @toscho pentru o soluție alternativă.

Stephen Harris Stephen Harris
4 iul. 2012 20:31:17