Превратите все заголовки сайта на WordPress в заглавную букву - PullRequest
1 голос
/ 14 июня 2010

Так что мне нужен запрос или какой-нибудь совет о том, как превратить все заголовки на веб-сайте с поддержкой WordPress в прописные буквы.

Теперь у меня есть что-то вроде этого:

AAAAABBBBB CCCCC

Я хочу, чтобы это было так:

Aaaaa Bbbbb Ccccc

Я пробовал поискать и искать здесь, но не справился с этой задачей, поэтому любая помощь очень нужнаприветствуется!

ОБНОВЛЕНИЕ:

Мне нужно обновить заголовки внутри базы данных.Просто быть чистым.:)

Ответы [ 5 ]

2 голосов
/ 14 июня 2010

Для этого в MySQL нет функции, но вы можете создать такую:

DROP FUNCTION IF EXISTS proper;
SET GLOBAL  log_bin_trust_function_creators=TRUE;
DELIMITER |
CREATE FUNCTION proper( str VARCHAR(128) )
RETURNS VARCHAR(128)
BEGIN
  DECLARE c CHAR(1);
  DECLARE s VARCHAR(128);
  DECLARE i INT DEFAULT 1;
  DECLARE BOOL INT DEFAULT 1;
  DECLARE punct CHAR(17) DEFAULT ' ()[]{},.-_!@;:?/';
  SET s = LCASE( str );
  WHILE i < LENGTH( str ) DO 
    BEGIN
      SET c = SUBSTRING( s, i, 1 );
      IF LOCATE( c, punct ) > 0 THEN
        SET BOOL = 1;
      ELSEIF BOOL=1 THEN 
        BEGIN
          IF c >= 'a' AND c <= 'z' THEN 
            BEGIN
              SET s = CONCAT(LEFT(s,i-1),UCASE(c),SUBSTRING(s,i+1));
              SET BOOL = 0;
            END;
          ELSEIF c >= '0' AND c <= '9' THEN
            SET BOOL = 0;
          END IF;
        END;
      END IF;
      SET i = i+1;
    END;
  END WHILE;
  RETURN s;
END;
|
DELIMITER ;

С здесь .

Вы можете легко обновить, запустив:

Update wp_posts
Set post_title = proper(post_title)
1 голос
/ 14 июня 2010

Вы можете оставить его как есть в базе данных и заставить заголовок отображаться с заглавными буквами с помощью css:

h2 {
  text-transform:capitalize;
}
0 голосов
/ 14 июля 2010

Для записи вышеприведенная функция MySQL завершается ошибкой, когда последний символ стоит отдельно, например,

Public John q

Есть простой обходной путь, если вам не нужно заполнение:

trim(proper(concat(myfield, '    ')))
0 голосов
/ 14 июня 2010

Просто используйте ucwords ($ title) сами по себе - но тщательно проверяйте ваши варианты использования - сокращения не отображаются так, как могут ожидать ваши пользователи.

"Руководство для начинающих по TLA" станет "НачинающимПутеводитель по Тлас "

0 голосов
/ 14 июня 2010

не могли бы вы попробовать обернуть слова WordPress the_title (); функция с ucwords и strtolower

<?php echo ucwords(strtolower(the_title(null, null, false))); ?>

Из того, что я могу собрать, берется значение заголовка, использующее strtolower для преобразования его в нижний регистр, а затем слово ucwords для заглавных букв в каждом слове.

Я сам не пробовал, поэтому не знаю, как это работает, но вот как бы я это попробовал.

Надеюсь, это поможет

РЕДАКТИРОВАТЬ : верно, я посмотрел на один из моих старых файлов, в вашем functions.php вы можете определить функцию для подключения к действию save_post. Используя переменную post, вы должны иметь возможность корректировать эти данные, но, как и другие говорили, вы должны быть осторожны, если они не дают желаемого эффекта.

add_action('save_post', 'save_postdata');
function save_postdata($post_id) {
    //edit code here
    update_post_meta($post_id, 'title', $title);
}

Я использую функцию update_post_meta () , я не совсем уверен, есть ли у нее возможность редактировать заголовок, мне, к сожалению, не нужна возможность запуска теста.

Что вы, ребята, думаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...