32
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

よく使うワードプレス関数、ハマる落とし穴

Last updated at Posted at 2014-06-10

よく使うワードプレス関数

(今いるページの)記事IDを取得

<?php $post->ID; ?>

<?php get_the_ID(); ?>でも一緒!

(今いるページの)urlを取得

<?php the_permalink(); ?>

記事カテゴリIDを取得

<?php get_the_category( 記事ID ); ?>

引数記事IDは省略可能。省略したら、現在のカテゴリ。

記事タイトル取得

今いるページの記事タイトル取得

<?php the_title(); ?>

wp_postsテーブルのpost_titleを取得

<?php get_the_title( 記事ID ); ?>

サムネイル画像のurl(パス)取得

<?php wp_get_attachment_url(get_post_thumbnail_id( 記事ID )); ?>
  • thumnail_idと記事IDは別物なので注意!
  • get_post_thumbnail_idは、引数[記事ID]からthumnail_idを取得
  • wp_get_attachment_urlは、引数[thumnail_id]からサムネイル画像のurl(パス)取得
  • この方法なら元画像のurlを取得できる。

以下の方法でも画像のurlを取得できる。
↓↓(画像サイズは150☓150)

<?php 
$thumb = get_the_post_thumbnail($post->ID,'thumbnail');
$pattern= "/(?<=src=['|\"])[^'|\"]*?(?=['|\"])/i";
preg_match($pattern, $thumb, $thePath);
echo "$thePath[0]";
?>

TOP画面か否かを調べる

<?php is_front_page(); ?>

top画面(記事一覧画面)ならtrue、それ以外ならfalse

DBアクセス(例)

<?php $wpdb->get_results('SELECT * FROM table_name', ARRAY_A); ?>
<?php $wpdb->get_var( 'query', column_offset, row_offset ); ?>
など
  • sql文は各自読み替えること。
  • アクセスするDBの設定は、wp-config.phpに書いておく。
  • get_varなどのメソッドも適宜読み替えること。
  • get_var('クエリ文', 列番号, 行番号):戻り値1つ
  • prepare():
  • get_raw('クエリ文', output_type, row_offset):output_typeは、以下の3通り。
    • OBJECTARRAY_A(連想配列)、ARRAY_N(インデックス配列)
  • get_col()
  • get_results('クエリ文', output_type)

DBから記事urlのリストを取得するためのsql文

select ID, post_title, post_date from wp-posts where post_status = 'publish' and post_type = 'post';
  • 「記事ID」と「記事タイトル」と「投稿日時」を取得
  • post_status = 'publish'これ付けないと「自動下書き」も含まれてしまう
  • post_type = 'post'これ付けないと「footer」などの記事以外のリンクも含まれてしまう

ハマる落とし穴

functions.phpをいじるときは細心の注意を!

構文エラーが生じたら管理画面すら真っ白になる。
管理画面を使わずに直にfunctions.phpをいじらなくてはいけなくなるので、functions.phpをいじる前には細心の注意を!

RSSのurlたたくとエラーになる問題

原因のほとんどは、xmlファイルの一番最初に空白行が含まれてしまっていること。
解決策は、

  • header.phpの最初に空白行があれば、削除
  • wp-includes/feed-rss2.php、wp-includes/feed-rss2-comments.phpの2ファイルの行頭にob_end_clean();を記入
  • 各ファイル最後の<?php ?>?>を省略すべし
  • wp-rss2.phpやwp-atom.phpに関して、<?php ?>の外に改行がないことをチェック
  • wp-config.phpに関して、<?php ?>の外に改行がないことをチェック
  • functions.phpに関して、<?php ?>の外に改行がないことをチェック
  • plugin無効化

上記、上から順に対応していけばだいたいOK。
ブラウザキャッシュが残っていると変更が更新されない事が多いので、変更後は【ブラウザキャッシュの削除】を忘れずに!!!!!
(「ブラウザのキャッシュ」と「閲覧履歴」は別物なので注意!)

stg環境での「予約投稿失敗」対処法

ここでは、
「stg環境(basic認証あり)では予約投稿失敗し、本番環境(basic認証なし)ではうまくいく」
場合の対処法を記す。

WordPressの予約投稿の手順は、

  • サイトに誰かがアクセス
  • 予約投稿を時間過ぎた投稿がないかチェック
  • あればHTTP-CRONを使用して投稿実行

投稿実行のリクエストは、stgで用いているサーバー自身。
つまり、自サーバーからのリクエストをbasic認証なしでアクセス可能な設定にすればOK!

施す対処は以下の1行をWordPressフォルダ直下の.htaccessに追記するのみ。

allow from 127.0.0.1
32
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?