WordPress3.5にしたらprepareでエラーが出た場合の対処

WordPress3.5より 関数 prepare の第2引数が必須になりました。

これによって一部のプラグインで以下のようなエラーが出る場合がありました。
「Warning: Missing argument 2 for wpdb::prepare(), called in ~/wp-content/plugins/XXXXX/XXXXX.php on line 1712 and defined in ~/wp-includes/wp-db.php on line 990」

~3.4.2 wp-db.php

function prepare( $query = null ) { // ( $query, *$args )

(第2引数は関数内部で受取るようになってます)

3.5 wp-db.php

function prepare( $query, $args ) {

(第2引数は必須になってます)

これにより、prepare関数で第1引数だけで使っている場合にエラーが発生します。

不動産プラグインシリーズは今回のバージョンアップで対応しましたが、他社のプラグインはまだ対応できていないようです。

【緊急対策例】
 WordPressの コアファイル を触る事になりますが、他社のプラグインが対応するまで 一時的に prepare関数 を以前のコードに戻してみるのはいかがでしょうか。

wp-includes/wp-db.php

prepare関数 (WordPress3.4.2)

function prepare( $query = null ) { // ( $query, *$args )
    if ( is_null( $query ) )
        return;

    $args = func_get_args();
    array_shift( $args );
    // If args were passed as an array (as in vsprintf), move them up
    if ( isset( $args[0] ) && is_array($args[0]) )
        $args = $args[0];
    $query = str_replace( "'%s'", '%s', $query ); // in case someone mistakenly already singlequoted it
    $query = str_replace( '"%s"', '%s', $query ); // doublequote unquoting
    $query = preg_replace( '|(?<!%)%s|', "'%s'", $query ); // quote the strings, avoiding escaped strings like %%s
    array_walk( $args, array( &$this, 'escape_by_ref' ) );
    return @vsprintf( $query, $args );
}

こちらのコードと差し替えてみてください。
*他社のプラグインが対応すれば元に戻すのを忘れずに。

【追記】
 wp-config.php に以下のコードを追記する方法もあるようです。

@ini_set('display_errors', 0);

*PHPでのエラーの表示をオフにする

不動産プラグインでフィールドを非表示にする方法

WordPressのプラグイン「不動産プラグイン」でフィールドを非表示にする方法のメモ。
不動産プラグイン

fudo-functions.phpの

add_action('○○○', '○○○') ;

の部分をコメントアウトする。

WordPressで特定のカテゴリの最新記事を表示

WordPressで特定のカテゴリの最新記事を表示する方法

		<ul class="sidemenu">
			<?php
			$my_query = new WP_Query('cat=1&showposts=10');
			while ($my_query->have_posts()) : $my_query->the_post(); ?>
			<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
			<?php endwhile; ?>
		</ul>

WordPressでに入る»やスペースを消す方法

WordPressの専用タグ

<?php wp_title(); ?>

を使用する際、なぜか»やスペースが自動的に入ってしまう。

これは、デフォルトで決まっているためです。
公式サイト参照

これを解決するためには、以下の様なタグを記述すると良い。

<?php echo trim(wp_title('', false)); if (wp_title('', false)) ?>

WordPressでカテゴリーを表示する

WordPressでカテゴリーを表示する基本のタグは下記の通り。

<?php wp_list_categories(); ?>

また、下記の様に詳細を設定することもできる

<?php wp_list_categories('show_count=TRUE&child_of=10&title_li='); ?>

設定詳細

WordPressでカテゴリーを自由に並び変えることが出来るMy Category Order

My Category Orderを使ってカテゴリーを自由に並び変えることが出来る。
テンプレートファイルに直接書く場合は、

<?php wp_list_categories('orderby=order'); ?>

WordPressで更新順にする方法

例をメモしておきます。

<?php
$posts = query_posts(array(
    'posts_per_page' => 3,
    'orderby' => 'modified',
));?>
			<?php if ( have_posts() ) : ?>
				<ul class="indexNews">
				<?php while ( have_posts() ) : the_post(); ?>
					<?php
						get_template_part( 'content-index', get_post_format() );
					?>
				<?php endwhile; ?>
				</ul>
			<?php else : ?>
				<p style="margin: 50px auto 0 40px;">ただ今準備中です。</p>
			<?php endif; ?>
			<?php wp_reset_query(); ?>

カスタムフィールドを使いやすくする Custom Field Template

ダウンロードは以下から
Custom Field Template

設定のテンプレートコンテンツには、以下のように入力する

[Plan]
type = text
size = 35
label = Where are you going to go?

[Plan]
type = textfield
size = 35
hideKey = true

[Favorite Fruits]
type = checkbox
value = apple # orange # banana # grape
default = orange # grape

[Miles Walked]
type = radio
value = 0-9 # 10-19 # 20+
default = 10-19
clearButton = true

[Temper Level]
type = select
value = High # Medium # Low
default = Low

[Hidden Thought]
type = textarea
rows = 4
cols = 40
tinyMCE = true
htmlEditor = true
mediaButton = true

[File Upload]
type = file

また、テンプレートファイルには、以下のように追記する。

■テキストを表示させる例

<?php echo get_post_meta($post->ID,'住所', true);?>

■画像を表示させる例

<?php echo wp_get_attachment_image(post_custom('メインイメージ'),'originalImage'); ?>

■googleマップを表示させる例

<iframe width="580" height="400" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.jp/maps?q=<?php echo get_post_meta($post->ID,'住所',true); ?>&amp;z=25&amp;output=embed"></iframe><br /><a href="http://maps.google.co.jp/maps?q=<?php echo get_post_meta($post->ID,'住所',true); ?>&amp;gl=jp&amp;t=m&amp;z=25&amp;iwloc=A&amp;source=embed" target="_blank">大きな地図で見る</a>

WordPress カスタムフィールドの表示方法

WordPressのカスタムフィールドの表示タグは以下の通り。


<?php
$field = get_post_meta($post--->ID, 'カスタムフィールドの名前', true);
if($field != '') {
echo get_post_meta($post->ID, 'カスタムフィールドの名前', true);
} else {
echo '値が空欄の表示文言';
}
?>

contact form 7 にccを追加する

コンタクトフォーム7にccを追加するには、「追加ヘッダー」の箇所に、

CC:sample@gmail.com

といった感じで追加する。

詳細→http://contactform7.com/adding-cc-bcc-and-other-mail-headers/?lang=ja

WordPressでテンプレートファイル内に指定したページを表示させる方法

WordPressでテンプレートファイル内に指定したページを表示させる方法

 <?php query_posts('pagename=quick'); ?>
<?php  if(have_posts()):
while(have_posts()): the_post(); ?>
<?php the_content(); ?>
<?php endwhile; endif; ?>

WordPress テーマディレクトリのパスを出力するタグ

WordPress テーマディレクトリのパスを出力するタグ

 

<?php bloginfo('template_directory'); ?>

WordPressで外部のRSSを表示するタグ

WordPressで外部のRSSを表示するタグ

<h4 class="indexTitle">ブログ最新情報</h4>
<?php // Get RSS Feed(s)
include_once(ABSPATH . WPINC . '/rss.php');
$rss = fetch_rss('ブログのURL');
$maxitems = 5; // 最大表示件数
$items = array_slice($rss->items, 0, $maxitems);
?>
<ul class="indexNews">
<?php if (empty($items)) echo '<li>No items</li>';
else
foreach ( $items as $item ) : ?>
<li><span class="indexNewsDate"><?php $item_date  = $item['pubdate'];
$out_item_date  = date('Y年n月j日', strtotime($item_date) + 9*3600); // 変更部分
echo $out_item_date; ?></span>
<a href='<?php echo $item['link']; ?>'
title='<?php echo $item['title']; ?>' target="_blank">
<?php echo $item['title']; ?></a></li>
<?php endforeach; ?>
</ul>

WordPressで最新の投稿を表示するタグ

トップページに最新記事5件を日付・タイトルをリスト表示。
さらに過去30日以内の記事にはNEWアイコンを付けるコード。

<ul>
  <?php query_posts('posts_per_page=5'); ?>
  <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  <li>
  <span class="date">
  <?php the_time('Y年n月j日'); ?>
  <?php
    $days=30;
    $today=date('U'); $entry=get_the_time('U');
    $diff1=date('U',($today - $entry))/86400;
    if ($days > $diff1) {
  echo '<img src="images/new.gif" alt="New" />';
  }
  ?>
  </span>
    <a href="<?php the_permalink(); ?>"><?php the_title();?></a>
  </li>
  <?php endwhile; endif; ?>
  <?php wp_reset_query(); ?>
</ul>

WordPressの条件分岐タグまとめ

まずは、基本的なif文の使い方

 <?php if(is_page('42')): ?>
このページはページIDは"42"です!
<?php elseif(is_page('About Me')): ?>
このページのタイトルは"About Me"です!
<?php elseif(is_page('about-me')): ?>
このページの投稿スラッグは"about-me"です!
<?php endif; ?>


<?php if(is_home()): ?>
<h1>AAAAAAAAAA</h1>
<?php else: ?>
<h1>BBBBBBBBBB</h1>
<?php endif; ?>

WordPressの条件分岐タグのじぶんなりのまとめです。 スラッグに「index」が付いているページ

 <?php if(is_page('index')): ?>~ <?php endif; ?>

メインページ

 <?php if(is_home()): ?>~ <?php endif; ?>

フロントページ サイトのフロントページが表示されている場合。投稿の場合とページの場合あり。管理画面の「設定>表示設定>トップページの表示」で、「最新の投稿」が選択されているか、「固定ページ (以下を選択)」で現在のページが表示されている場合。 注: この条件タグは バージョン 2.5 で追加。

 <?php if(is_front_page()): ?>~ <?php endif; ?>

シングルページ

 <?php if(is_single()): ?>~ <?php endif; ?>

記事を含むページ

 <?php if(comments_open()): ?>~ <?php endif; ?>

WordPress ループ内で処理中の記事がコメント受信を受け付けている場合

 <?php if(pings_open()): ?>~ <?php endif; ?>

WordPress ループ内で処理中の記事がピン(ピンバックおよびトラックバック)を受け付けている場合 ページ

 <?php if(is_page()): ?>~ <?php endif; ?>

ページテンプレート(バージョン 2.5以降)

 <?php if(is_page_template()): ?>~ <?php endif; ?>

カテゴリーページ

 <?php if(is_category()): ?>~ <?php endif; ?>

アーカイブページ タグページ 日付別ページ

 <?php if(is_date()): ?>~ <?php endif; ?><?php if(is_year()): ?>~ <?php endif; ?><?php if(is_month()): ?>~ <?php endif; ?><?php if(is_day()): ?>~ <?php endif; ?><?php if(is_time()): ?>~ <?php endif; ?>

検索結果ページ

 <?php if(is_search()): ?>~ <?php endif; ?>

404 Not Found ページ

 <?php if(is_404()): ?>~ <?php endif; ?>

詳細条件分岐指定 シングルページ

 <?php if(is_single('17')): ?>~ <?php endif; ?>

ID 17の記事が表示されている場合

 <?php if(is_single('Irish Stew')): ?>~ <?php endif; ?>

“Irish Stew”(ビーフシチュー)というタイトルの記事が表示されている場合

 <?php if(is_single('beef-stew')): ?>~ <?php endif; ?>

“beef-stew”(ビーフシチュー)という投稿スラッグの記事が表示されている場合

 <?php if(is_single(array(17,'beef-stew','Irish Stew'))): ?>~ <?php endif; ?>

ID が 17、投稿スラッグが “beef-stew”、またはタイトルが “Irish Stew” のいずれかにあてはまる記事が表示されている場合。注: 配列を引数に使えるのは バージョン 2.5 以降 ページ

 <?php if(is_page('42')): ?>~ <?php endif; ?>

ID 42のページが表示されている場合

 <?php if(is_page('About Me And Joe')): ?>~ <?php endif; ?>

“About Me And Joe”というタイトルのページが表示されている場合

 <?php if(is_page('about-me')): ?>~ <?php endif; ?>

“about-me”という投稿スラッグのページが表示されている場合

 <?php if(is_page(array(42,'about-me','About Me And Joe'))): ?>~ <?php endif; ?>

ID が 42、投稿スラッグが”about-me”またはタイトルが”About Me And Joe”のいずれかにあてはまるページが表示されている場合 注: 配列を引数に使えるのは バージョン 2.5 以降 ページテンプレート(バージョン 2.5以降)

 <?php if(is_page_template('about')): ?>~ <?php endif; ?>

“about”というページテンプレートが使われている場合 カテゴリーページ

 <?php if(is_category('9')): ?>~ <?php endif; ?>

カテゴリーID 9のアーカイブページが表示されている場合

 <?php if(is_category('Stinky Cheeses')): ?>~ <?php endif; ?>

“Stinky Cheeses”というカテゴリーのアーカイブページが表示されている場合

 <?php if(is_category('blue-cheese')): ?>~ <?php endif; ?>

“blue-cheese”というカテゴリースラッグのアーカイブページが表示されている場合

 <?php if(in_category('5')): ?>~ <?php endif; ?>

現在の記事がカテゴリーID 5に属する場合にtrueを返す タグページ

 <?php if(is_tag('mild')): ?>~ <?php endif; ?>

“mild”というスラッグのついたタグのアーカイブページが表示されている場合

<?php if(is_tag(array('sharp','mild','extreme'))): ?>~ <?php endif; ?>

“sharp”または”mild”または”extreme”というスラッグのついたタグのアーカイブページが表示されている場合 注: 配列を引数に使えるのは バージョン 2.5 以降

以下カスタム投稿含めたまとめ

<?php if(is_page()): ?>
固定ページの場合のみ表示

<?php elseif(is_single()): ?>
<?php if ( get_post_type() === '投稿タイプ名' ): ?>
指定されたカスタム投稿タイプ名の場合のみ表示
<?php else: ?>
投稿の個別ページの場合のみ表示
<?php endif; ?>

<?php elseif(is_category()): ?>
カテゴリーページの場合のみ表示
<?php elseif(is_post_type_archive('カスタム投稿タイプ名')): ?>
指定されたカスタム投稿タイプ名のアーカイブページの場合のみ表示
<?php elseif(is_tax('カスタム分類名')): ?>
指定されたカスタム分類名ページの場合のみ表示
<?php elseif(is_tag()): ?>
タグのアーカイブページtag.phpの場合のみ表示
<?php elseif(is_search()): ?>
検索結果ページの場合のみ表示
<?php elseif(is_404()): ?>
404ページの場合のみ表示
<?php else: ?>
それ以外
<?php endif; ?>

WordPressで設置ディレクトリとは異なるディレクトリで表示

【1】管理画面 「設定」→「一般設定」の「ブログのアドレス(URL)」を希望のアドレスに書き換えて保存。
ex.) http://www.hogehoge.com
【2】ルートディレクトリに、WordPress 本体がおいていあるディレクトリの index.php,.htaccess を移動する。
【3】ルートディレクトリに移動した index.php を編集する。
<変更前>

/* Short and sweet */
define('WP_USE_THEMES', true);
require('./wp-blog-header.php'); ※ここが変更箇所
?>

【4】4行目 require(‘./wp-blog-header.php’); を require(‘./○○○○/wp-blog-header.php’); と書き換えて保存。(「○○○○」は、WordPress 本体をインストールしてあるディレクトリ名)

<変更後>

/* Short and sweet */
define('WP_USE_THEMES', true);
require('./○○○○/wp-blog-header.php');
?>

この index.php は、WordPress 内部の動作命令すべてを受け取るファイルです(wp-blog-header.php から読み取っている)。なので、ここで編集した index.php から wp-blog-header.php へのパスを WordPress 本体がインストールされているサブディレクトリをはさんだパスに変更する、ということになります。

.htaccess のパーミッションを書き込み可能にする。(mod_rewrite ルールの変更。書き込み可能にしておけば、自動的に .htaccess の中身を変更してくれます。mod_rewrite ルールは手動で書き換えることも可能です。手順 6 を参考にしてください)
.htaccess の変更前のソースは以下。

<変更前>

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /○○○○/index.php [L] ※ここが変更箇所

# END WordPress

.htaccess の中身を確認。以下のように書き換わっていれば OK。

<変更後>

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] ※書き換わった状態

# END WordPress

手順 2 で説明したように、変更前は /○○○○/index.php を読み込ませていましたが、ルートディレクトリ直下に移動した /index.php を読み込ませるように.htaccess で操作しています。

【5】http://www.hogehoge.com/○○○○/wp-login.php からログインしなおす。
【6】パーマリンク設定をデフォルトから変更していた場合、再度保存しなおす。
※手動で .htaccess を書き換える場合には、管理画面のいちばん下に書き換えるためのソース(↑上のソース)が出力されますので、それを.htaccess にコピペして保存します。
【7】新しいサイト URL にアクセスし、正常に表示されるか確認。
【8】.htaccess のパーミッションを書き込み不能に戻す。

WordPress パーマリンク設定

http://sample.com/任意

とする場合、パーマリンク設定で「カスタム構造」を選択し、テキストボックスに

/%postname%/

と入れる。

また、カテゴリ―を含める際は、

/%category%/%postname%/

とする。

 

WordPress のカテゴリーベースのパーマリンクはデフォルトだと 「~/category/xxx」 になりますが、MTからの移行の際に前回までのカテゴリー設定にあわせカテゴリーベースのパーマリンクを空値にしたい。。
という時は、下記プラグインをインストールする。

WP No Category Base

ヘッダにを記述

WordPressでテーマを作成する際、ヘッダに

<?xml version='1.0' encoding='UTF-8'?>1

と記述するとエラーになってしまう。
そのため、

1<?
echo "<?xml version='1.0' encoding='UTF-8'?>";
?>

と記述する。

WordPressでマルチサイト時のテーマの追加

WordPressをマルチサイトにし、テーマを追加する際は、
ヘッダメニューの「サイトネットワーク管理者」より、

テーマ > ネットワーク有効化

しなければならない。

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress