WEBの勉強ノート
Loading

Windows Live Writer でテーマを取得できない

2009 年 10 月 2 日 金曜日

だいぶ前に設定した、このブログのテーマは反映されているのですが、新しく作った別のサイトでWindows Live Writer でテーマが取得できません。

調べてみたら、同様の症状の人はいるものの、解決策は見つかりませんでした。単純に編集用の CSS を指定できるようにしてくれればいいのに、、

それでも、オンラインのエディタよりはずっと便利なので使いますが、、


参考

Windows Live Writer が早くも使えなくなった

Windows Live Writer + WordPress + wp.Vicuna Ext. Custom メモ

WordPress移行しちった

WordPress 全体に閲覧認証をかける

2009 年 9 月 30 日 水曜日

自分用ナレッジベースとして、Wordpress でサイトを作ってみました。WEB に公開できるような完成度ではないような文章をためておければいいなと。

最初は、.htaccsess で Bsic認証をかけていたのですが、これでは Windows Live Writer で投稿できませんでした。そこで、Wordpress 側で認証できる仕組みを模索してみました。

今回使用したものは、プラグインではなく、/wp-blog-header.php のwp(); の直前に下記のコードを追記します。

if (is_user_logged_in()){
 }
 else {
 auth_redirect();
};

コードの動作

is_user_logged_in() : ユーザーがログインしているかどうかを返す
WordPress.org : Function Reference/is user logged in

auth_redirect() : ユーザーがログインしているかどうかを判別し、ログインしていなければログインページにリダイレクト。ログインに成功すれば、最初にアクセスを試みたページに再度リダイレクトする。
WordPress.org : Function Reference/auth redirect

説明を見る限り、auth_redirect() のみでも閲覧制限をかけられそうですが、これだけでは正しいユーザー/パスワードを入力してもログインできなくなってしまいました。

この動作を見る限り、auth_redirect() はログインに成功した場合、遷移元のページにリダイレクトするので、ログインページ自体を遷移元と認識してしまって、ログイン成功→ログイン画面のループにはまっているのでしょうか?それともバグ?auth_redirect() を定義しているコードを読んでいないのでわかりません。。

いずれにせよ、ログインしているかどうかを、is_user_logged_in() で判別してから auth_redirect() を呼び出すことで期待通りの動作をさせることが可能になりました。


blog.sugulab.com : WordPressに認証をつける。

WordPress カテゴリを jQuery でアコーディオンにしてみる

2009 年 8 月 16 日 日曜日

このブログは階層構造をもつカテゴリのみをナビゲーションにしています。しかしカテゴリは増えるばかりで逆にわかりにくくなってきました。そこで、親カテゴリを残して、子カテゴリを開閉式のアコーディオンにしてみました。

目標とした動作

・子カテゴリ (孫カテゴリ以下を含む) を非表示に
・親カテゴリのリンクを無効化→子カテゴリの開閉に使う

$(document).ready(function(){
$('li.widget_categories>ul>li>ul').css('display','none');
$('li.widget_categories>ul>li>a').click(function(e){e.preventDefault()}).attr('href','#');
$('li.widget_categories>ul>li>a').click(function() {
$(this).next().slideToggle('slow');
});
});

問題は、子カテゴリのページに移動したときにそのカテゴリが展開されたままだとよいのですが。ページ遷移を超えるので、セッションとかクッキーとか使えばできるのでしょうが、めんどいのでとりあえず開閉のみ。

※追記、デザインを変えてからこの機能は付けていません。また、子カテゴリ(孫カテゴリ以下を含む)を非表示にするのをJavascriptで行っていますが、Jacascriptが実行される前までは表示されていて、実行されたタイミングで非表示になるので、cssで最初から非表示にしていたほうが良い気がします。

ただし、SEOの視点から見ると、display: none の指定はスパム判定の一因になる可能性もあるのでむずかしいところです。サイドバーのリンク集を displya: none にしたところで、いきなりスパム判定になるということもないでしょうけど。

WordPress ウィジットのタイトルに h2 を使わない方法

2009 年 7 月 30 日 木曜日

サイドバーのカレンダーや最新エントリ一覧などのウィジットのタイトルは、デフォルトでは h2 タグが使われています。SEO の面から考えれば、見出しとして認識させたい部分ではないので p など、任意のタグに変更したほうがいいような気がします。

ただし、ウィジットのタイトルはテーマで定義されているのではないようです。そこで、fuction.php に以下のコードを追加します。

if (function_exists('register_sidebar'))
register_sidebar(array(
'before_widget' => '<div class="widget">',
'after_widget' => '</div>',
'before_title' => '<p>',
'after_title' => '</p>',
));

ウィジットの前後のタグ、ウィジットのタイトルタグを上書きしています。


WordPress.日本語 : WordPress ウィジェット API

WordPress の ”ページ” で、任意のテンプレートを使う

2009 年 6 月 28 日 日曜日

WordPress を CMS として使う際、ページごとに別のテンプレートを適用させたい場合があります。たとえば、トップページだけ別のテンプレートにしたい場合とか。

方法は、任意の .php のテンプレートの最上部に、以下の記述を加える。

<?php
/*
Template Name: Top Page
*/
?>

すると、新規ページの作成画面や、ページの編集画面でテンプレートを選択できるようになります。

image

WordPress のカスタムフィールドで title タグを補完

2009 年 6 月 15 日 月曜日

WordPress のカスタムフィールドを使って、title タグを設定するサンプルを作ってみました。header.php とかの title タグを以下のコードと置き換えます。

<title><?php
$title = get_post_meta($post->ID,title,TRUE);
if ($title == "") {wp_title('');}
else {echo $title;}
?> &laquo <?php bloginfo('name'); ?></title>

WordPress のカスタムフィールドを使ってmetaタグのキーワードを設定する方法

2009 年 6 月 15 日 月曜日

カスタムフィールドで、meta タグの “keywords” , “description” を入力できると楽しいなと思ったのでやってみました。まず、Wordpress のダッシュボードのカスタムフィールドで、それぞれ、”keywords” と “description” の名前のカスタムフィールドを作成しておきます。それから、下のコードを header.php の普段 meta タグを書いている場所に貼り付けます。

<meta name="keywords" content="<?php echo get_post_meta($post->ID,keywords,TRUE); ?>">
<meta name="description" content="<?php echo get_post_meta($post->ID,description,TRUE); ?>">

これだけで、meta タグの中に “keywords” と “description” を埋め込むことができました。若干気になったのが、もしカスタムフィールドに入れ忘れたら、キーワードが入っていない meta タグができてしまう。meta タグ自体がないのと、空欄の meta タグがあるのはどっちがましなんだろうかと。。細かいことですが。

で、カスタムフィールドが空欄の場合、meta タグ自体を表示させないパターンも作ってみました。

<?php $keywords = get_post_meta($post->ID,keywords,TRUE);
if (isset($keywords)) {
echo "<meta name="keywords" content="$keywords">\n";
} 

$description = get_post_meta($post->ID,description,TRUE);
if (isset($keywords)) {
echo "<meta name="description" content="$description">\n";
}
?>

追記。上記のコードでは、カスタムフィールドの keyword を空のままにした場合、キーワードが空欄の meta タグが出力されてしまい、失敗。で、if の条件を $keywords == “” にしてみると動きました。なんでだろ。こんな感じ↓

<?php
$keywords = get_post_meta($post->ID,keywords,TRUE);
if (!$keywords == "") {
echo "<meta name="keywords" content="$keywords">\n";
}
$description = get_post_meta($post->ID,description,TRUE);
if (!$keywords == "") {
echo "<meta name="keywords" content="$keywords">\n";
}
?>

同じようにすれば title タグとかもコントロールできそうですね。カスタムフィールドで入力したタイトル+サイト名、なんて使えそうな気がします。

WordPress でカテゴリのページだけ本文を折りたたんでみる

2009 年 5 月 5 日 火曜日

カテゴリのページだけ記事のタイトルが並ぶようにしたい。かつ、タイトルの下にボタンをつけて、ページ遷移なしで本文を出したい!という思いがずっとあって、今回実際にやってみました。

大まかな手順

  • category.php にボタンの画像を設置
  • category.php の記事の本文を適当なクラスをつけた div で囲む
  • header.php で jQuery を読み込ませる
  • header.php にボタンをクリックすると記事が出てくるように javascript を書く

書いてみた javascript

カテゴリをクリックしたあとのページで動いてます。

$(document).ready(function(){
    $(‘div.hoge).css(‘cursor’,'pointer’); 
    $(‘div.hoge).click(function() {
        $(this).next().slideToggle(‘slow’);
    });
});

クリックした要素の次の要素

“クリックした要素の次の要素” の指定のしかたがよくわからず、時間がかかった。

$(this + ‘div.hoge’)

みたいにすると、クリックした要素 (this) の次の div.hoge が指定できると思いきや、すべての div.hoge に効果が発動してしまう。検索すると next() を使うと実現できることが判明。

next([expr])

要素集合の各要素の「次」にあたる兄弟要素を、全て抽出する。
このnext関数はあくまで各要素のすぐ隣の要素のみを抽出し、次以降を選択するのではない。その場合はnextAllを用いること。
引数には条件式を指定し、結果セットから更に絞込みを行うことも可能。

http://semooh.jp/jquery/api/traversing/next/[expr]/

WordPress 初期設定その 2 プラグイン

2009 年 3 月 29 日 日曜日

Akismet の有効化

Akismet はデフォルトでインストールされており、有効化を行う必要がある。
screenshot-2009_03_29-11_46_04
・[ダッシュボード] → [プラグイン] → [インストール済み]
・[Akismet] → [使用する]
・wordpress.com/signup/ でユーザー登録
・登録完了メールの API キー → [ダッシュボード] → [プラグイン] → [Akismet 設定] へ入力
screenshot-2009_03_29-11_45_27

WP Multibyte Patch の有効化

・[ダッシュボード] → [プラグイン] → [インストール済み]
・[WP Multibyte Patch] → [使用する]

Revision Control

エントリやページ編集時のリビジョンの自動保存を無効化する。

・[ダッシュボード] → [プラグイン] → [新規追加] “Revision Control” で検索
・検索結果の右上 “インストール” をクリック → プラグイン情報がポップアップ
・[今すぐインストール] → [プラグインの有効化]
・[ダッシュボード] → [設定] → [Revisions]
・[投稿リビジョン設定] → [使用しない] [ページのリビジョン設定] → [使用しない]
screenshot-2009_03_29-11_15_31

WordPressの設置

2009 年 3 月 28 日 土曜日

20090328_2222

WordPressの設置はとても簡単でした。リモートのサーバにインストール?という感じでしたが、ものの5分で完了。もっと難しいのかと思ってました。おおまかな流れをメモ。

WordPressのインストール

1. WordPress 日本語版を公式サイトからインストール・解凍
2. wp-config-sample.php に MySQL の接続情報を追記・リネーム
3. *.php のパーミッションを 705 か 755 にしてアップロード
4. ブラウザから /wp-admin/install.php にアクセス

インストールに関してはこれだけでOK

より詳細な手順→さくらインターネットで WordPress

http://s2g.jp/masatsu/log/2008/0323224122.htm