web-dev-qa-db-fra.com

Empêcher Wordpress d'abréviation-de-longues-slugs ...- dans-l'administrateur

Sur les pages de post-édition, lorsqu'un slug dépasse un certain nombre de caractères, Wordpress la raccourcit avec un Ellipsis (...). Par exemple, si mon slug est i-want-to-be-able-to-see-this-slug, il apparaît sur la page d'édition comme suit:

Lien permanent: http://example.com/2012/i-want-to-be-a...-see-this-slug/ [Modifier]

Puis-je empêcher Wordpress de faire cela?

J'aime pouvoir voir (et copier) une URL complète sans dissimulation. Je meurs d'envie de savoir comment me débarrasser de cette fonctionnalité.

5
supertrue

Il y a un filtre à la fin de la fonction: 'get_sample_permalink_html'. Accrochez-vous et remplacez simplement la forme raccourcie par toute la longueur.

<?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   = '<span id="editable-post-name" ';
    $s2   = '</span>';

    return preg_replace(
        '~' . $s1 . '([^>]*)>([^<]*)' . $s2 . '~Ui',
        $s1 . '$1>' . $link[1] . $s2,
        $sample
    );
}

Résultat

Titre du message: Ceci est un titre assez long. WordPress le raccourcirait par défaut, mais notre plugin Nice l’empêche.

enter image description here

Télécharger depuis GitHub .

4
fuxia

Ce n’est pas possible via un filtre ou un crochet d’action, WordPress coupe les cordes très fort. voir la ligne 1110 de wp-admin/includes/post.php dans WP 3.4alpha

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

Vous pouvez ouvrir un ticket sur le Trac de WordPress pour inclure un filtre.

3
bueltge