帖子标题大写到句子大小写

时间:2017-02-12 作者:Panait Andrei Alexandru

我在woocommerce有超过7500种产品,标题为大写。

我想把这些改成“句子格”

将脚本应用于WordPress数据库中的所有标题的最佳方式是什么?

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

您可以使用数据库中的命令执行此操作:

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`)
        )
    )
);
如果您的作者有发布大写标题的习惯,您可以为每个插件添加一个过滤器,以便在添加新帖子时更改标题:

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