database - Uppercase to sentence case for post titles

I have more than 7500 products in woocommerce with TITLES IN UPPERCASE.I'd like to change these to "Sentence c

I have more than 7500 products in woocommerce with TITLES IN UPPERCASE.

I'd like to change these to "Sentence case"

What would be the best way to apply the script to all titles in the WordPress database?

I have more than 7500 products in woocommerce with TITLES IN UPPERCASE.

I'd like to change these to "Sentence case"

What would be the best way to apply the script to all titles in the WordPress database?

Share Improve this question edited Feb 12, 2017 at 10:05 fuxia 107k39 gold badges255 silver badges459 bronze badges asked Feb 12, 2017 at 8:24 Panait Andrei AlexandruPanait Andrei Alexandru 637 bronze badges 2
  • This may not have been done in Database at all, check in your WordPress Editor, if the titles there are not in ALL UPPERCASE, then it was done in CSS, in which case, it can be changed very easily. – Fayaz Commented Feb 12, 2017 at 9:08
  • All title where written in upper case, and there are more then 7500 products with upper case title. Anyway Inresolved the problem with the plugin friendly case – Panait Andrei Alexandru Commented Feb 12, 2017 at 9:09
Add a comment  | 

1 Answer 1

Reset to default 2

You can do that with a command in your database:

UPDATE `wp_posts` /* Adjust the prefix! */
SET `post_title` = CONCAT(
    UCASE( /* First letter uppercase */
        SUBSTRING(
            `post_title`, 1, 1
        )
    ),
    '',
    LCASE( /* The rest in lowercase */
        SUBSTRING(
            `post_title`, 2, LENGTH(`post_title`)
        )
    )
);

If your author has a habit of posting uppercase titles, you can add a filter per plugin to change titles whenever a new post is added:

add_filter( 'wp_insert_post_data', function( array $data ) {

    // list of words not to change
    $protected_words = [
        'SQL',
        'CSS',
        'BBC'
    ];

    if ( empty( $data['post_title'] ) )
        return $data;

    $words = explode( ' ', $data['post_title'] );

    $words = array_map( function( $word ) use ( $protected_words ) {
        return in_array( $word, $protected_words )
            ? $word
            : mb_strtolower( $word, 'UTF-8' );
    }, $words );

    // There is no mb_ucfirst()
    $words[0] = mb_convert_case( $words[0], MB_CASE_TITLE, "UTF-8");

    $data['post_title'] = join( ' ', $words );

    return $data;
});

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744581593a4582069.html

相关推荐

  • database - Uppercase to sentence case for post titles

    I have more than 7500 products in woocommerce with TITLES IN UPPERCASE.I'd like to change these to "Sentence c

    2天前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信