※スマホ対応はしてません。

カテゴリー: サーバー

PHP+SQLでバインド変数を使っているとき、どうしてもSyntax Errorになるなあと思ったら、型を指定しないといけなかったらしい。

カテゴリー: サーバー

PDO使ってます。

これが駄目だった。

  $limit = 2;
  $posts = $db->prepare('select * from posts limit ?');
  $posts->bindValue(1, $limit);
  $successed = $posts->execute();
  if (!$successed) {
    var_dump($posts->errorInfo());
  }
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2'' at line 1

どうも数値2が文字列"2"になってる感じがするね。

(さらに…)

プログラマーだけどWordPressのテーマを1から作ってみる。(その4)

カテゴリー: サーバー

そういえばサイドバーを忘れてました。

作業の記録付けるのも忘れてました。

サイドバーにも二種類あるらしい

静的なものと、動的なものと。

後者が管理画面の外観>ウィジェットから操作できるやつで、前者は単純にテンプレートを読み込むだけ(対応アクションはある)。

静的なサイドバー

get_sidebar()で読み込む。

<?php get_sidebar('hoge'); ?>でsidebar-hoge.phpというテンプレートを探してきて、出力する。

これは簡単だね。ファイルがないとデフォルトのものを読み込むみたい。

動的なサイドバー

何もしないとウィジェット設定の画面でこのテーマではウィジェットは使用できませんと表示されてる。

利用できるようにするには、register_sidebar()を使って「登録」してやる必要があるみたい。

これをfunctions.phpに書いておく。

register_sidebar(array(
  'name' => 'サイドバー',
  'id' => 'sidebar-1',
));
register_sidebar(array(
  'name' => 'フッター',
  'id' => 'footer-1',
));

これでウィジェット設定に出てくる。

使うときはdynamic_sidebar()で読み込む。

<ul id="sidebar">
  <?php dynamic_sidebar( 'sidebar-1' ); ?>
</ul>

出力されるウィジェットはliタグで囲まれるようになるので、それらをulで括る必要がある。これはdynamic_sidebar()のオプションbefore_widget, after_widgetで変更できる。

タイトルはh2で出力されるんだけど、これも同様にbefore_title, after_titleで変える事ができたよ。

強引だけどこんな事もできるね

register_sidebar(array(
  'id' => 'table-1',
  'before_widget' => '<tr>',
  'before_title' => '<th>',
  'after_title' => '</th><td>',
  'after_widget' => '</td></tr>',
));
<table>
  <?php dynamic_sidebar( 'table-1' ); ?>
</table>

↓結果(整形済み)

<table>
  <tr>
    <th>アーカイブ</th>
    <td>
      <ul>
        <li><a href='http://localhost/?m=201204' title='2012年4月'>2012年4月</a></li>
        <li><a href='http://localhost/?m=201203' title='2012年3月'>2012年3月</a></li>
      </ul>
    </td>
  </tr>
</table>

こんな風に使う場面はないと思うけども。

多言語対応

そういえばこれも知りたいところ。明日調べよう。

プログラマーだけどWordPressのテーマを1から作ってみる。(その3)

カテゴリー: サーバー

もうちょいでできそうだねー。

とりあえずコメント

twentyelevenのindex.phpにもcontent.phpにもcommentという単語は見当たらない。どこだ?と思ったら、個別ページではindex.phpではなくsingle.phpが読み込まれているらしい。

というわけでsingle.php内で検索するとあっさり発見。

  • wp-content/themes/twentyeleven/single.php #25
                    <?php comments_template( '', true ); ?>

この一行でコメント一覧と投稿フォームまで表示された。このHTMLはどこで記述してるんだろう?

というか、その前にsingle.phpとは??

(さらに…)

WordPressのコメント欄をタグ禁止とかにする。

カテゴリー: サーバー

コメントフォームのところ、こんなの表示されてますよね。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

これ以外のタグはすっぱり削除されてしまうんですが、例えばコメント欄でHTMLのコードについて議論した事もあるだろうし、削除じゃなくてエスケープして出力するようにしたいですね。(というか勝手に削るなよ、と言いたい。)

あと空行を見つけるとそこで区切って<p>〜</p>にされるけど、これも改行は全部改行のまま出力したい。

要は概ね書いたまま表示するようにしたい、と。まあ空白くらいは詰めてもいいけど、普通の掲示板風の動きにしたいわけです。

フィルターで独自に置換

どうもフィルターを使う事でうまくやれるみたい。

(さらに…)

WordPressで「続きを読む」の前を消し去るNoTeaser記法ってご存知ですか。

カテゴリー: サーバー

先日のNextPage記法に引き続き、また知らないのがあったので。

「続きを読む」より前の部分を消し去り、一覧画面と個別画面で全く別の文章を表示させる事ができます。

(さらに…)