0

I have error in permalink, I have post that title is big like :-

مراجعة : Sony Xperia Z2 و إيجابياته و سلبياته و كل ما تريد معرفته عن الجهاز !

Now when open the post in my site i see permalink like :-

www.domain.com/مراجعة-sony-xperia-z2-و-إيجابياته-و-سلبياته-و-كل-ما

Its read only 11 word

But i set the permalink structure is /%postname%/.

Why its not get all post title ?

update:-

I search and see this code that solved my problem :-

// first of all lets remove standard hook
remove_filter( 'sanitize_title', 'sanitize_title_with_dashes' );

// add our custom hook 
add_filter( 'sanitize_title', 'wpse8170_sanitize_title_with_dashes', 10, 3 );
function wpse8170_sanitize_title_with_dashes( $title, $raw_title = '', $context = 'display' ) {
    $title = strip_tags($title);
    // Preserve escaped octets.
    $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
    // Remove percent signs that are not part of an octet.
    $title = str_replace('%', '', $title);
    // Restore octets.
    $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);

    if (seems_utf8($title)) {
        if (function_exists('mb_strtolower')) {
            $title = mb_strtolower($title, 'UTF-8');
        }
        $title = utf8_uri_encode($title, 1000); // <--- here is the trick!
    }

    $title = strtolower($title);
    $title = preg_replace('/&.+?;/', '', $title); // kill entities
    $title = str_replace('.', '-', $title);

    if ( 'save' == $context ) {
        // Convert nbsp, ndash and mdash to hyphens
        $title = str_replace( array( '%c2%a0', '%e2%80%93', '%e2%80%94' ), '-', $title );

            // Strip these characters entirely
            $title = str_replace( array(
            // iexcl and iquest
            '%c2%a1', '%c2%bf',
            // angle quotes
            '%c2%ab', '%c2%bb', '%e2%80%b9', '%e2%80%ba',
            // curly quotes
            '%e2%80%98', '%e2%80%99', '%e2%80%9c', '%e2%80%9d',
            '%e2%80%9a', '%e2%80%9b', '%e2%80%9e', '%e2%80%9f',
            // copy, reg, deg, hellip and trade
            '%c2%a9', '%c2%ae', '%c2%b0', '%e2%80%a6', '%e2%84%a2',
            // grave accent, acute accent, macron, caron
            '%cc%80', '%cc%81', '%cc%84', '%cc%8c',
        ), '', $title );

        // Convert times to x
        $title = str_replace( '%c3%97', 'x', $title );
    }

    $title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
    $title = preg_replace('/\s+/', '-', $title);
    $title = preg_replace('|-+|', '-', $title);
    $title = trim($title, '-');

    return $title;
}
10
  • 2
    You said "arabic permalinks" but you posted a Roman. Confused to gasp the question. – Mayeenul Islam Oct 22 '14 at 11:16
  • Have you tried with more than one? Are they all cut off at the same length (only the %postname% part, not the domain)? And if yes. What is the length? – kaiser Oct 22 '14 at 11:54
  • @MayeenulIslam i edit my post – The 15 Seconds Oct 22 '14 at 12:26
  • 2
    @Kaiser is telling you to do some more tests with different titles. Also mention after how many characters/letters(not word) the URL's get cut with each title. – sakibmoon Oct 22 '14 at 12:55
  • 1
    @The15Seconds Please add your solution not in the question, but as an answer, and accept the answer by clicking on the checkmark so that some other will be benefited. :) And, don't forget to mention the source, from where you got the code. :) – Mayeenul Islam Oct 22 '14 at 14:41
1

It depends on what encoding you are using. If you look at the database structure of wp_posts, you will see that post_name field is varchar(200)

So, at most it can store 200 bytes of data. If you are using UTF-16 encoding, it needs 4 bytes to store an Arabic character. So, at most it can store 50 Arabic characters.

For different encoding, it will be different. See https://stackoverflow.com/questions/4322191/how-many-bytes-do-we-need-to-store-an-arabic-character

1
  • Thank, I set the post_name like as post_title and nothing new. what can i do ?? – The 15 Seconds Oct 22 '14 at 12:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.