※社内専用

All in One Seoでkeywordsが小文字になってしまう件

  • HOME
  • EPRESS-BS
  • All in One Seoでkeywordsが小文字になってしまう件
wordpressのプラグインAll in one SEOのmeta keywordsが大文字で入力しても小文字で表示される件。
keywordsに関しては大文字も小文字も関係ないみたいですが
https://translate.google.co.jp/translate?hl=ja&sl=en&u=https://www.en.advertisercommunity.com/t5/Performance-Optimization/Upper-case-or-lower-case-in-keywords/td-p/328696&prev=search

どうして?と調査依頼があったので
調べました。
それに伴いsqlの備忘録。

プラグイン

プラグインのファイルに以下の記述
all-in-one-seo-pack/aioseop_class.php
L3222あたり
function clean_keyword_list( $keywords ) {
    $small_keywords = array();
    if ( !is_array( $keywords ) ) $keywords = $this->keyword_string_to_list( $keywords );
    if ( !empty( $keywords ) )
        foreach ( $keywords as $word ) {
            $small_keywords[] = trim( $this->strtolower( $word ) );
        }
    return array_unique( $small_keywords );
}
$small_keywords[] = trim( $this->strtolower( $word ) );
strtolowerで想像できますが$this->strtolowerをもぐってみると大文字を小文字化してる処理がある。
小文字化したくない場合は$this->strtolowerを削除すればok。

テーマ

テーマファイル内で解決したければadd_filterを使って対応。
DBから値をとって確認作業が増えてしまうが以下。
function upper_keywords($keywords){
  global $wpdb;
  $key = strtoupper($keywords);
  $results_page = $wpdb->get_var( $wpdb->prepare(
  "
    SELECT meta_id
    FROM $wpdb->postmeta
    WHERE meta_value = BINARY %s
  ",
  $key
  ) );

  if($results_page) {
    $keywords = strtoupper($keywords);
  }
  return $keywords;
}
add_filter('aioseop_keywords', 'upper_keywords');
mysqlはデフォルトは大文字と小文字が区別しないみたいで
それだと確認作業ができない。
なのでBINARY を使って区別しています。 http://d.hatena.ne.jp/sutara_lumpur/20120818/1345280287

知らなかった… ちなみに大文字、小文字を英語でどう言うかも知りませんでした。 Uppercase(大文字)
Lowercase(小文字) だそうな。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14108129349
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1360954443