カテゴリー [ WordPress関連 ] の投稿一覧

下書きの状態の投稿をログイン不要で他の人に見せられる(Public Post Preview)

2012-12-20

Public Post Preview
クライアントワークの場合に便利なプラグインがありました。

公開していない記事を他人に見せる場合、

「投稿を下書きしてログインして見てもらう」
「投稿にパスワード保護をかけて見てもらう」
「画面ショットを見てもらう」

などが主流だったのでは無いかと思います。

このプラグインは「投稿を下書きしてプレビュー用のテンポラリーURLにアクセスして見てもらう」事ができます。
特にポータルサイトなど、サイト運営者がさらにそのクライアントに記事の内容を確認してもらう場合に便利かもしれませんね。

さて導入方法と使い方です。

ダウンロード


Public Post Preview


インストール方法


ダウンロードしたファイルをプラグインフォルダに格納し、管理画面からプラグインを有効にするだけ。


使い方


1) 投稿を普通に書いて下書きで保存します。

2) 投稿編集画面の下の方に「Public Post Preview」のボックスがあるので、
  「Enable public preview」にチェックを入れる

「Enable public preview」にチェックを入れる

3) このようにURLが発行されるので、これを見てもらいたい人に教えてあげればOK。
  WordPressにログインしなくても投稿内容を確認する事ができます。

下書き閲覧用のURLが発行される

WordPress 投稿のカテゴリーリンクを表示したい場合

2012-12-10

投稿にはカテゴリーを複数設定できます。
投稿一覧や投稿画面において、投稿が属するカテゴリーをリンクとして表示させておきたい場面は結構あるかと思います。
特にブログやコラムなんかだとこういう事多いですよね。
これを関数化しておくと結構便利、という話です。

投稿が属するカテゴリーはget_the_categoryを使えば取得できます。
このように。

$my_cats = get_the_category($post->post_ID);

ただこのままだと配列の状態で取得されるので、
通常はリンクなどのHTMLに加工して出力するかと思います。

カテゴリーIDが分かれば、
カテゴリーページへのリンクはget_category_linkを使って取得できます。
foreach ($my_cats as $my_cat) {
    echo get_category_link($my_cat->cat_ID);
}

またどこかで使いそうな感じの処理ですね。
こういった処理は関数化しておくと便利です。
カンマ区切りでカテゴリーリンクを表示する関数を作ってみました。
function get_post_category_link($post_id) {
 
    //カテゴリーリスト
    $my_cats = get_the_category($post_id);
     
    if ($my_cats) {
     
        $cats_cnt = 0;
        foreach ($my_cats as $my_cat) {
             
            if ($cats_cnt > 0) {
                echo ', ';
            }
 
            $cat_link = get_category_link($my_cat->cat_ID);
 
            echo '<a href="' . $cat_link . '">' . $my_cat->name .'</a>';
             
            $cats_cnt++;
        }
    }
 
}

こんな感じで使います。
引数「$post_id」には投稿IDを与えます。
<?php
	get_post_category_link($post_id);
?>

カテゴリーベース(Category)を消している場合にページネーションが404になる場合の対応

2012-12-03

「WP No Category Base」はカテゴリーページのURL「Category」を消すことができるので、
WordPressをカスタマイズする際には必須のようなプラグインです。

パーマリンク設定を「/%category%/%post_id%」のように設定すると、
クエリ文字列を使用したURLから解放され、かつ「Category」というURLも消す事ができます。

こうした状況の中、ページネーション(改頁)を実現できるプラグイン「WP-PageNavi」を使用すると、
2ページ以降(/page/2 といったようなURL)が404になってしまうようです。
以前はそんな事なかったので、恐らく最近のWPバージョンで発生する模様。

色々解決策はあるようですが、
シンプルな解決策を備忘録的にエントリーしておきます。

「WP No Category Base」を使用している場合に「WP-PageNavi」が動作しない場合の解決策

プラグイン「WP No Category Base」を無効にする
まずこのプラグインを無効化(というか使うのをやめます)。

プラグイン「Top Level Categories」を使用する
「WP No Category Base」とほぼ同じ事ができるプラグインです。
ダウンロード:Top Level Categories
ここまでだとまだページネーションは動かないと思いますので次のステップ。

プラグイン「Top Level Categories Fix」を使用する
これを入れるとページネーションが動作するようになります。
ダウンロード:Top Level Categories Fix

WordPressの必須関数query_postsを使う場合はリセットを忘れずに

2012-11-26

WordPressは投稿や固定ページ(以下投稿に省略)に登録しておいた情報を呼び出して表示しますので、
投稿を呼び出さない事には何も始まりません。

投稿を呼び出すのにも色々パターンがあるかと思います。
投稿を1つ取得したいのか、一覧で取得したいのか、カテゴリーを限定して取得したいのか、などなど。
この辺は別の機会にまとめるとして、query_postsを使う場合の注意事項をメモしておきます。

query_postsの基本的な使い方


例えばカテゴリーIDが1,2,3の投稿を取得する場合、下記のような書き方をします。
どういう条件で投稿を取得するかを指定して、投稿を取得して、ループで1投稿ずつ処理していく、という流れです。
<?php

	//条件
	$args = array(
		'cat' => 1,2,3
	);

	// クエリ
	query_posts( $args );

	// ループ
	if ( have_posts() ) : 
		while ( have_posts() ) : 
		the_post();
			echo $post->post_title;
		endwhile; 
	else:
	  ..
	endif;

	// クエリをリセット
	wp_reset_query();

?>

これがページのメインのコンテンツ用であればあまり問題になりませんが、
サイドバーやヘッダー、フッター用にquery_postsを使う場合、ちょっと注意が必要です。


query_postsの省略形(条件無しで使う)


WordPressでは今投稿詳細ページなのか、トップページなのか、というのをアクセス時のURLで判断しています。
今回はquery_postsに「条件」を指定しましたが、このように条件なしでも使えます。
<?php

	// クエリ
	query_posts();

	// ループ
	if ( have_posts() ) : 
		while ( have_posts() ) : 
		the_post();
			echo $post->post_title;
		endwhile; 
	else:
	  ..
	endif;

?>

条件無しとはどういう事かというと、URLに従ってWordPress側で検索条件をセットしているのです。
その為、何も条件を指定しなくても使える、という事になります。

でも「サイドバーにも別の投稿を表示させたい!」となると、
1ページで2回query_postsすることになりますよね?
すると、条件分岐タグ等の関数がうまく動作しなくなります。
query_postsはグローバル変数を書き換える為、それを元に動作しているタグ(関数)が正常に動作しなくなるという訳です。


query_postsを使ったら必ずリセットする


では、どうしたら良いかと言うと、
「query_postsを使ったらリセット」すればOKです。
最初のコードにはしれっと入れておきましたが、query_postsを使い終わったら(ループが終わったら)下記コードでリセットします。
wp_reset_query();

結論としては簡単な話ですが、ハマる人も多いかと思いますので、ご参考下さいませ。

AStickyPostOrderERの並び替えが効かない場合の対応

2012-11-21

投稿一覧を出力する方法は幾つかありますが、デフォルトではいずれの方法も「新しい投稿順」で表示されます。
WordPressをブログ以外の用途で使う場合、投稿の並び替えができないと困ったことになります。

投稿一覧を取得するテンプレートタグにも並び替えオプションが指定できますが、
タイトルや日付順といった指定になりますので、自由に順番を指定するにはプラグインを利用するのが良いです。

そこでこのプラグイン。

AStickyPostOrderER
基本的には普通にインストールするだけですが、テンプレートによっては並び替えが効かないはず。
ここで途方にくれる人も多いでしょう(私もそうでした…)。

ダウンロード先
AStickyPostOrderER

インストール方法
1) ダウンロードしたファイルを解凍し、「wp-content/plugins」フォルダへアップします。
2) WP管理画面からプラグインを有効化

使い方
1) 専用の設定画面を開きます
ツール -> AStickyPostOrderER

2) 一覧から並び替えをしたいカテゴリーかタグをクリック
3) 投稿一覧が出てきます。右側の「Send To」に数字で順番を入れていきます。
4) 「Save and Reflesh」で保存
数字を入れた投稿は「Sorted」側へ移動します。
この時点で並び替えが反映されます。

並び替えができない場合
並び替えされてないよ!という方も多いでしょう。
特にカスタマイズをしている場合は、うまく動かすのに少しコツが必要なので、下記も試してみて下さい。

query_postsに引数を与える
query_postsにorderby、orderという2つの引数を与えてみて下さい。

$args = array(
	'orderby' 	=> 'order',
	'order' 	=> 'ASC'
);

query_posts($args);

修正パッチを当てる
WP3.1以降はここまでやってもまだ動かないと思います。
パッチが存在しますのでこれを当てます。

AStickyPostOrderER WordPress 3.1 compatibility patch

ダウンロードしたファイルを「AStickyPostOrderER」のプラグインフォルダに上書きすればOKです。

それでも並び替えができてない!という方。
get_postsを使ってませんか?このプラグインはquery_postsでないと動作しないようです。
query_postsを使ってみて下さい。

非常に便利なプラグインなので使ってる方はかなり多いと思いますが、類似のプラグインはあまり見かけないですねー