Verhindere WordPress von Abkürzungen-langen-Slugs … -in-the-admin

Wenn ein Block auf einer Post-Edit-Seite eine bestimmte Anzahl von Zeichen überschreitet, wird er von WordPress mit einer Ellipse ( ... ) abgeschnitten. Zum Beispiel, wenn mein Slug den Slug sehen i-want-to-be-able-to-see-this-slug , erscheint er auf der Bearbeitungsseite wie folgt:

Permalink: http://example.com/2012/i-want-to-be-a...-see-this-slug/ [Bearbeiten]

Kann ich WordPress davon abhalten?

Ich möchte in der Lage sein, eine vollständige URL ohne Verschleierung zu sehen (und zu kopieren), also möchte ich herausfinden, wie ich mit dieser function fertig werde.

Solutions Collecting From Web of "Verhindere WordPress von Abkürzungen-langen-Slugs … -in-the-admin"

Es gibt einen Filter am Ende der function: 'get_sample_permalink_html' . Haken Sie sich ein und ersetzen Sie die verkürzte Form durch die volle Länge.

 < ?php # -*- coding: utf-8 -*- /* Plugin Name: T5 Unabridge Permalink Slug */ add_filter( 'get_sample_permalink_html', 't5_unabridge_sample_permalink', 10, 2 ); /** * Replaces the shortened permalink with its full form. * * @param string $sample Permalink HTML * @param int $id Post ID * @return string */ function t5_unabridge_sample_permalink( $sample, $id ) { $link = get_sample_permalink( $id ); $s1 = ']*)>([^< ]*)' . $s2 . '~Ui', $s1 . '$1>' . $link[1] . $s2, $sample ); } 

Ergebnis

Beitragstitel : Dies ist ein ziemlich langer Posttitel. WordPress würde es standardmäßig kürzen, aber unser nettes Plugin verhindert das.

Bildbeschreibung hier eingeben

Download von GitHub .

Es ist nicht über Filter oder Aktionshaken möglich, WordPress schneidet die Strings hart im core. Siehe wp-admin / includes / post.php Zeile 1110 in WP 3.4alpha

 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; } } 

Sie können ein Ticket auf dem Trac von WordPress öffnen, um einen Filter hinzuzufügen.

Wie @bueltge in seiner Antwort feststellt, gibt es derzeit keinen Filter oder Aktions-Hook, der dies erlauben würde. Hier ist der Hack, den ich gemacht habe, um zu verhindern ... Abkürzung.

wp-admin/includes/post.php in der Datei wp-admin/includes/post.php dieser Zeile (in WordPress 3.4.1 ist es Zeile 1117):

 $post_name_html = '' . $post_name_abridged . ''; 

Ändern Sie es zu diesem:

 // Changed $post_name_abridged to $post_name to prevent "..." abridgement of long slugs $post_name_html = '' . $post_name . ''; 

Da dies eine Core-Datei bearbeitet, wird die Änderung natürlich überschrieben, wenn eine neue WordPress-Version diese Datei aktualisiert.

Wenn irgendjemand einen Nicht-core-Hacker-Weg empfehlen kann, um dies zu erreichen, würde ich das sicherlich darüber verwenden.