WordPress カテゴリとかnoindexやキーワード整理用のSQLを作ってみた

シェアする

アクセス数が一年前から伸び悩んでおり、PVが一年前とあまり変わらない状況が続いています。月間PVは50,000前後。

どうにかならんものかと、設定を変えたりプラグイン入れたり手は打つもののあまり効果なし。投稿数が月間2つ(笑)というのも原因には違いないのですが、300記事もあるのに1日のPVは1500くらいで、もう少しあってもいいんじゃないかと日々試行錯誤していました。つまらない記事ばかりというのもあるでしょうが・・・^^;

色んなところで、キーワードの再設定不要な記事をnoindexする、またカテゴリを整理すると良いと見聞きし、そう言われてみれば今までやっていないので整理しようとするものの、どの記事がどのカテゴリに属しているのか、どの記事がnoindexなのかがひと目でわからない為、wordpressのデータベースの中身を見てSQLを書いてみました。プラグインがあればいいんですが、良いものが見つからなかった・・・ので、拙いながらも作ったので参考にしてもらえれば幸いです。SQLの作法的な所は無視して書いてます^^;

スポンサーリンク

全カテゴリ一覧を表示するSQL

一体全部でどれだけのカテゴリを作っているのか、またそのカテゴリに属している記事数を一覧化するSQLです。カテゴリの親子関係やタグについては表示してません。

SQL

SELECT DISTINCT name,slug,count 
  FROM `wp_terms`,`wp_term_relationships`,`wp_term_taxonomy` 
 WHERE `wp_terms`.`term_id`= `wp_term_taxonomy`.`term_id`
   AND `wp_term_relationships`.`term_taxonomy_id` = `wp_term_taxonomy`.`term_taxonomy_id`
   AND `wp_term_taxonomy`.`taxonomy` = "category"
;

表示例

mysql上でSQLを実行すると下記のような感じです。

noindexを設定している記事一覧SQL

All in one SEO を使っている場合について、noindexが設定されている記事をピックアップするSQLです。All in one SEO以外の場合は、このSQLでは抽出できませんので悪しからず。本当は全記事一覧にnoindexを外部結合してnoindexのあるないにかかわらず見せようとしましたが、よく分からず挫折しました・・・・。分かる人推して下さいm(_ _)m

SQL

SELECT `wp_posts`.`ID`,`post_title`,CHAR_LENGTH(post_content),pageviews, name,slug,count,`wp_postmeta`.`meta_key`
  FROM `wp_posts`,`wp_popularpostsdata`,`wp_terms`,`wp_term_relationships`,`wp_term_taxonomy`
  LEFT outer join `wp_postmeta`
    ON `meta_key` like "%_aioseop_noindex" and meta_value = "on"
 WHERE `post_status` = 'publish' and `post_type` = 'post'
   AND `wp_popularpostsdata`.`postid` = ID
   AND   `wp_terms`.`term_id`= `wp_term_taxonomy`.`term_id`
   AND `wp_term_relationships`.`term_taxonomy_id` = `wp_term_taxonomy`.`term_taxonomy_id`
   AND `wp_term_taxonomy`.`taxonomy` = "category"
   AND   `wp_term_relationships`.`object_id` = `ID`
   AND `wp_posts`.`ID` = `wp_postmeta`.`post_id`
;

表示例

全記事にカテゴリ名をくっつけた一覧SQL

全記事の一覧にカテゴリ名もくっつけて表示するSQLです。文字数についてもカウントしていますが、単純にHTMLタグも数えてしまうので正確ではないと思います。

また、記事別の閲覧数も取得しています。

SQL

SELECT `wp_posts`.`ID`,`post_title`,CHAR_LENGTH(post_content), name,slug,count
 FROM `wp_posts`,`wp_terms`,`wp_term_relationships`,`wp_term_taxonomy`
 WHERE `post_status` = 'publish'
   AND `post_type` = 'post'
   AND `wp_terms`.`term_id`= `wp_term_taxonomy`.`term_id`
   AND `wp_term_relationships`.`term_taxonomy_id` = `wp_term_taxonomy`.`term_taxonomy_id`
   AND `wp_term_taxonomy`.`taxonomy` = "category"
   AND `wp_term_relationships`.`object_id` = `ID`

表示例

文字数多いが検索上位にいっていないものをリライトするなどして整理!

SQLにはソート順を指定していませんので、ご自身で指定していただいて色々な切り口で整理されるのが良いと思います。

私は、かなり時間を割いたのに検索上位に食い込まない記事をリライトしたり、旬が過ぎていたらnoindexしたりし、整理しています。整理してもすぐ効果が現れるわけではないみたいですので、ロングスパンで対応していきましょう!