ラベル wordpress の投稿を表示しています。 すべての投稿を表示
ラベル wordpress の投稿を表示しています。 すべての投稿を表示

2012年9月29日土曜日

WordPressの投稿のデータ取得のいろいろ

WordPressでIDがわかっている投稿を1だけ取得する場合は「get_post」関数を使うと思います。

<?php get_post($id); ?>

この関数を使うときに注意することはIDは変数で渡す。くらいですが、
関数のリファレンスを見て恥ずかしながら初めて知りました。
ID以外にも引数があるんですね。

<?php get_post($id, $output, $filter); ?>

詳しくはリファレンスみたほうが手っ取り早いですが、戻り値の型($output)を指定できるんですね。

  • "OBJECT" 投稿オブジェクト(初期値)
  • "ARRAY_N" インデックス配列
  • "ARRAY_A" 連想配列

何気に使えます。

リファレンス
http://codex.wordpress.org/Function_Reference/get_post

2012年9月7日金曜日

WordPressのPluginの作り方

プラグインの作り方についてはかなり記事が公開されていますのでそちらを参考にしてもらえれば大体できます。

私が参考にした記事と簡単に作り方の紹介を。


ひとつ目の記事ですがほんとに簡単です。
マニュアルを読んでもよくわからないというかたはまずは試してみるといいと思います。

実際にプラグインを作っていくには
まず「wp-content/plugins」に「myplugin」というフォルダと「myplugin/myplugin.php」を作成します。

準備はこれだけです。
しかし、この状態でプラグインの一覧を見ても何も変わらないと思います。
認識させるにはテーマと同じようにコメントを記述する必要があります。
<?php
/*
 * Plugin Name: (プラグイン名) MyPlugin
 * Plugin URI: (プラグインの紹介ページ) http://foo.jp/
 * Description: (プラグインの説明) Sample MyPlugin
 * Version: (プラグインのバージョン) 1.0
 * Author: (作成者) Yasuhiro Hayashida
 * Author URI: (作成者の紹介ページ) http://foo.jp
 * License: GPL2
 */

コメント記述するだけでプラグインの一覧に表示されるようになります。
ここからプラグインの中身を作成していけばOKです。

プラグインの中でデータベースを使うやり方とかも上の記事を参考に作っていくとすんなり動作すると思います。

少しだけ抜粋というかプラグインを有効化したときに実行されるような関数を作りたい場合の手順だけ紹介します。

myplugin.class.phpというファイルを同じディレクトリに作成してそれぞれプログラムを組んでいきます。

myplugin.php
// Load Class File
require_once dirname(__FILE__).DIRECTORY_SEPARATOR."myplugin.class.php";

// Instance
global $myplugin;
$myplugin = new MyPlugin();

// Register
register_activation_hook(__FILE__, array($myplugin, "activate"));

myplugin.class.php
class MyPlugin {

    public function activate() {
        echo 'activate method !';
        die();
    }
 
}

上記のように記述することでプラグインが実行されたときに「activate」が実行されるようになります。
ただし、実際に有効化するとエラーになって有効化はされないはずです。

しかし、有効化されたときに処理が実行されていることはわかると思います。
dieとか echo とか書いてるんで有効されないだけで

実は上のサンプルで有効化したときの処理としてはこれが正常です。

自作のテーブルを使いたい場合などは、プラグインが有効化されたにテーブルを作成すれば良いのでこういったやり方で、CREATE TABLE とかしてやればOK。


上のサンプルくらいな簡単なので
試しに作ってみると動きとかもわかってるのかなとおもいます。



2011年8月25日木曜日

wordpressのパーマリンク設定 其の二(IIS7+URL Rewrite)

其の一ではIIS6+ISAPI_Rewriteでのパーマリンクを書きましたが次にIIS7+URL Rewrite。
IISのバージョンによってツールを使い分けないといけませんのが面倒ですがまずwordpressのドキュメントにも記載されているURL Rewriteをダウンロードします。

インストールは特に問題ないはずです。

インストール後、IISの管理画面にURL Rewriteという項目が新たに追加されますが、自分の環境では特にここれ触れることなく設定ができました。

設定はwordpressのパーマリンクを指定するだけ。そうするとwordpressのインストールディレクトリに"web.config"というファイルが作成されます。

念のためIISを再起動してサイトを見ると設定が反映されます。

wordpressのパーマリンク設定 其の一(IIS6+ISAPI_Rewrite)

以前にapache+mod_rewriteを使ったパーマリンクの設定を書きましたが今回はIIS6+ISAPI_Rewrite。
ISAPI_Rewriteについてはこっち(大したことは書いてませんが)

ISAPI_Rewriteの設定は以下
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?p=$1 [NC,L]

テスト環境とかだと複数のワードプレスをディレクトリ分けてやってるとこはあると思いますがそういった場合は環境に合わせて以下のように修正します。
RewriteBase /wordpress/ ←ここ
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /wordpress/index.php?p=$1 [NC,L] ←ここ

これでIISの設定は完了。
あとはwordpress側でパーマリンクの設定をすることでapache+mod_rewriteと同じような動作をすることができます。

2011年8月24日水曜日

wordpressのl10n.js

wp_headを使ってヘッダー情報を出力した場合、l10n.jsというのが出力されます。
これはjavascriptで多言語メッセージを処理するものらしいのですが、これを除去する場合は
remove_action( 'wp_head', 'wp_print_head_scripts', 9 );

で除去することができます。
ただし、これでは他のライブラリ(jqueryとか)も一緒に消えてしまいます。
l10n.jsだけを取り除く場合は
function deregister_scripts() {
    if ( ! is_admin() ) {
        wp_deregister_script( 'l10n' );
    }
}
add_action( 'wp_print_scripts', 'deregister_scripts' );

これをfunctions.phpに記述することでl10n.jsだけを消すことができます。

2011年8月23日火曜日

カテゴリの説明文を取得・表示する(category_description)

wordpressのカテゴリを登録する際に説明文を入力する項目があります。
ただ、入力エリアの下に"この説明はデフォルトではあまり重要な意味を持ちませんが、これを表示するテーマも中にはあります。"と記載されてます。
ん??まぁ表示してみます。

<?php echo category_description(); ?>

これでカテゴリの説明文を表示することができます。
この関数を使うとpタグ付きで表示がされます。

このpタグを除去する場合はfunctions.phpに以下を記述します。
remove_filter('term_description', 'wpautop');

2011年8月9日火曜日

ページをカスタマイズする際に親ページに属する子ページの一覧やリスト形式で表示する方法です。
やり方はいろいろですが自分のやり方を。。。

<?php
$c_pages = get_pages( 'child_of=' . $post -> ID );
if ( $c_pages ) {
    foreach ($c_pages as $c_page) {
        $c_title = apply_filters( 'the_title', $c_page -> post_title );
        $c_content = get_extended( $c_page -> post_title );
        $c_content = apply_filtes( 'the_content', $c_content['main'] );
?>
    <h3><?php echo $c_title; ?></h3>
    <?php echo $c_content; ?>
<?php
    }
}
?>

apply_filtesで the_title や the_content をフックすることでコンテンツを成形してくれます。
get_extendedは <!-- more --> で区切った内容を取得してくれます。

使用している関数

2011年7月22日金曜日

WordpressでjQueryを使う

wp_head()でjQueryを読み込んでいる場合、他のjavascriptライブラリ(prototype.jsなど)と衝突を防ぐためjQuery.noConflict()が使われています。
ですのでjQueryオブジェクトの呼び出しの際には明確に"jQuery"と記述する必要があります。

$(document).ready(function() {
    alert("hoge");
});

↓↓↓

jQuery(document).ready(function() {
    alert("hoge");
});

wp_headから不要なコードを削除する

デフォルトのまま<?php wp_head(); ?>を記述するといろんなタグが自動的に出力されます。
サイトに寄って要否があると思いますが不要なものを削除したい場合は、削除してしまいましょう。

wp_headについて記述があるのはwp-includes\default-filters.phpです。
【wp_head()にいろいろ追加して部分の抜粋】
add_action( 'wp_head', 'wp_enqueue_scripts', 1 );
add_action( 'wp_head', 'feed_links', 2 );
add_action( 'wp_head', 'feed_links_extra', 3 );
add_action( 'wp_head', 'rsd_link' );
add_action( 'wp_head', 'wlwmanifest_link' );
add_action( 'wp_head', 'index_rel_link' );
add_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
add_action( 'wp_head', 'start_post_rel_link', 10, 0 );
add_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
add_action( 'wp_head', 'locale_stylesheet' );
add_action( 'publish_future_post', 'check_and_publish_future_post', 10, 1 );
add_action( 'wp_head', 'noindex', 1 );
add_action( 'wp_head', 'wp_print_styles', 8 );
add_action( 'wp_head', 'wp_print_head_scripts', 9 );
add_action( 'wp_head', 'wp_generator' );
add_action( 'wp_head', 'rel_canonical' );
add_action( 'wp_footer', 'wp_print_footer_scripts' );
add_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
add_action( 'template_redirect', 'wp_shortlink_header', 11, 0 );

上記のファイルを書き換えても動作しますが、更新時など面倒なのでテーマディレクトリのfunctions.phpに記述します。
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
remove_action( 'wp_head', 'wp_print_styles', 8 );
remove_action( 'wp_head', 'wp_print_head_scripts', 9 );
remove_action( 'wp_head', 'wp_generator' );
remove_action( 'wp_head', 'rel_canonical' );

さらにWordPress3.1から?インラインスタイルも自動的に追加されます。
これはWordPressの管理画面から簡単にオンオフすることができます。
ユーザー >> あなたのプロフィール を開き下記画面の「管理バーの表示」の「サイトを表示する際」のチェックを外します。


これで不要なコードが削除されます。
前述しましたがサイトに寄って要否が変わってきますので不要な分だけ削除を行うようにしましょう。

2011年7月20日水曜日

テンプレートタグwp_title()で区切り文字を右に表示する

基本的なところですがちょっと悩んだんでメモ程度に。
デフォルトのまま、サイト名とページ名を表示する場合、
<title><?php bloginfo('name'); ?> <?php wp_title(); ?></title>
上の記述の場合、表示結果は「サイト名 >> ページ名」といった形になります。

これを「ページ名 >> サイト名」と表示したい場合
<title><wp_title('>>', true, 'right');> <?php bloginfo('name'); ?></title>
上のように記述します。

【wp_title】
sep
タイトルの前または後ろに表示するテキスト
echo
タイトルを表示(true)、非表示(false)
seplocation
区切り文字を左('')、右('right')

2011年6月20日月曜日

wordpressのパーマリンク設定 其の二(mod_rewrite)

其の一ではmod_rewirteのインストールというか導入を書いたので次はその設定方法。

apacheの再起動後、wordpressのインストールディレクトリを見てみると".htaccess"というファイルがあると思います。

このファイルに対して修正を行うとwordpressのパーマリンク設定が反映されるようになりますが、書き込みの権限さえあればwordpressが自動的に設定を変更してくれので特に気にする必要はないかも。

wordpressの設定は管理ツールを開いて設定→パーマリンクで画面を開きます。
最初はもちろんデフォルトになっているので指定したいURLのパターンを選択して保存するとOK。

実際にページを見てみてるとURLが

http://www.hoge.com/?p=2



http://www.hoge.com/2011/06/20/page/

になっていると思います。

wordpressのパーマリンク設定 其の一(mod_rewrite)

"mod_rewrite"はご存知の通りURL書き換えエンジンです。
wordpressではこのmod_rewriteを使って動的なURLを静的なURLに見せることができます。

このmod_rewriteを使うにはapacheのhttp.confを修正する必要があります。

まずはhttp.confをメモ帳とかで開いて

#LoadModule rewrite_module modules/mod_rewrite.so

の部分の先頭のコメントを削除します。↓

LoadModule rewrite_module modules/mod_rewrite.so

次に.htaccessファイルが使用できるようにwordpressをインストールしたディレクトリに合わせて以下を追記します。

<Directory "C:\works\apache2.2\htdocs\wordpress">
    AllowOverride All
</Directory>

設定は以上。あとはapacheを再起動すると有効になります。