Archive for 6 月, 2012

mod_rewriteでの携帯サイト振り分けがうまくいかない

by fujii | 6 月 20th, 2012 

mod_rewriteでつまづいたのでメモ。
携帯アクセスの時だけ別ディレクトリに飛ばしたくて以下のように書いたんですが、どうもうまく動かない。
RewriteCond %{HTTP_USER_AGENT} DoCoMo [OR]
RewriteCond %{HTTP_USER_AGENT} J-PHONE [OR]
RewriteCond %{HTTP_USER_AGENT} Vodafone [OR]
RewriteCond %{HTTP_USER_AGENT} SoftBank [OR]
RewriteCond %{HTTP_USER_AGENT} WILLCOM [OR]
RewriteCond %{HTTP_USER_AGENT} DDIPOCKET [OR]
RewriteCond %{HTTP_USER_AGENT} UP.Browser
RewriteRule ^$ http://なんとか/m/ [R]
何がおかしいんだろうと思って見てみたら、wordpressから吐き出された以下のコードが邪魔していました。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
このルールが携帯のルールよりも前に書いてあればいいんですが、携帯ルールを先に書いてしまうと不具合が起こります。
まず先に携帯ルールに沿って http://なんとか/m/index.php に飛ばされますが、その後wordpressルールによってindex.phpというファイルへのアクセスは全てベースディレクトリ下のindex.phpへと飛ばされます。
つまり、http://なんとか/m/index.php に飛ばしてたつもりがwordpressルールのせいで http://なんとか/index.php になってしまっていたということです。
wordpressルールを先に書けば、携帯ルール適用後に飛ばされることが無くなるのでこの問題は解決します。

more from " mod_rewriteでの携帯サイト振り分けがうまくいかない "...

Comments Off

wordpressの記事で「先頭に固定表示」を有効にする

by fujii | 6 月 5th, 2012 

自分でブログやってるときはこんな機能全く使わないんですが、仕事で問い合わせが来てしまったので調べざるを得なくなりました。
調べてみると、この機能はindex.phpで表示されるループでしか反映されないようです。(デフォルトテーマでは)
またindex.phpに書いたとしても、get_postsやquery_postsを自分で書いただけでは反映されない。
でも表示したい!という要望があったので以下の記事を参考に改造してみました。
サイドバーなどの記事一覧で先頭固定を有効にする
詳細はまあ書いてある通りなんですが、1つだけ問題が。
トップページには固定記事も含めて3件だけ表示したかったんですが、そのままコピペするとうまく表示されないです。
具体的には、
固定記事が設定されているときはそれらだけが表示され、固定でないものは表示されない
固定記事が1つも設定されてないとなぜかループが連続し、3件以上表示される
記事の問題なのかスクリプトの問題なのかは分からなかったのですが、とりあえず以下の方法で解決しました。
<?php
// 取得したい件数を指定する
$list_count = 3;
// まずは先頭固定記事のみを取得する
$q_parm = array(
‘post_type’=>’post’,
‘category_name’=>’hoge’, //特定カテゴリの記事を取得
‘posts_per_page’=>$list_count,
‘post__in’ => get_option(’sticky_posts’)
);
$wp_query = new WP_Query($q_parm);
//取得できた件数
$getnum = $wp_query->found_posts;
if (have_posts()) :
while (have_posts()) :
the_post();
//ここに表示部分を記述
endwhile;
endif;
?>
<?php
//先頭表示が3件未満の時のみ表示
if( $getnum < 3 ){
$list_count = $list_count - $getnum;
// 続いて先頭固定記事以外を取得する
$q_parm = array(
'post_type'=>‘post’,
‘category_name’=>’info’,
‘posts_per_page’=>$list_count,
‘post__not_in’ => get_option(’sticky_posts’)
);
$wp_query = new WP_Query($q_parm);
if (have_posts()) :
while (have_posts()) :
the_post();
//ここに表示部分を記述
endwhile;
endif;
}
?>
単純に、表示すべき総数から固定記事の数を引いて、残りの数だけ通常記事のリクエストを行っています。
コードは冗長ですがとりあえず一番分かりやすい方法として。

more from " wordpressの記事で「先頭に固定表示」を有効にする "...

Comments Off

wordpressでのOGP設定最適化

by fujii | 6 月 1st, 2012 

作ってたサイトで、モロに以下のサイトのような問題が起きました。
Facebookのいいね数がおかしい・シェアしてもトップページのURLしか出てこないバグの対処法
なので、これらの記事を参考にOGPを最適化。
WordPressでFacebookのいいね!ボタンを不具合無く設置する際のポイント
WordPressで、OGP(The Open Graph Protocol)に完全な情報を反映させる
結果のコードはコレ。
<?php
$post_id = get_the_ID();
$post = get_post($post_id);
$content = $post->post_content;
$content = apply_filters(’the_content’, $content);
$content = strip_tags($content);
$content = str_replace(” “, “”, $content);
$content = str_replace(” ”, “”, $content);
$content = mb_strimwidth($content, 0, 200, “…”);
?>
<meta property=”fb:app_id” content=”アプリID”>
<meta property=”og:title” content=”<?php the_title(); ?>”>
<meta property=”og:type” content=”blog”>
<meta property=”og:url” content=”<?php the_permalink(); ?>”>
<meta property=”og:description” content=”<?php echo $content; ?>”>
<meta property=”og:site_name” content=”<?php bloginfo(’name’); ?>”>
<?php
$str = $post->post_content;
$searchPattern = ‘/<img.*?src=(["\'])(.+?)\1.*?>/i’;
if ( [...]

more from " wordpressでのOGP設定最適化 "...

Comments Off

jqueryのajaxでdataを複数渡したい場合

by fujii | 6 月 1st, 2012 

var data = { value1 : $(’#hoge’).val(), value2 : $(’#fuga’).val() };
と値を複数入れた後、
$.ajax({
type: “POST”,
url: “sample.php”,
data: data
});
という感じで渡します。
受け取る画面(この場合sample.php)では
$_POST['value1']
$_POST['value2']
でそれぞれ値を受け取れます。

more from " jqueryのajaxでdataを複数渡したい場合 "...

Comments Off

WordPress SEO fine-tune by Meta SEO Pack from Poradnik Webmastera