WordPressで困った時に役立つお助けコード8つ

WordPressでコーディング中、「理由はなんだかわかんないけどちゃんと動作してくれない!」なんて事がありませんか?私は度々ありました。その都度ググって解決策を探していたのですが、そのお助けコードメモがEvernoteに結構たまってきたので記事にしてみます。よくわからないけど動かない!という時に試してみてください!


↑私が10年以上利用している会計ソフト!

お助けコードを使う前に

今まで動いていたのに突然動かなくなった!そんな時は慌てず、とりあえず以下を確認してみてください。プラグインが原因で動作しなくなる事が多いですね。

  • 有効化しているプラグインをすべて無効化して試す
  • </head> の前に <?php wp_head(); ?> があるか
  • </body> の前に <?php wp_footer(); ?> があるか
  • PHPコード(特にif構文)に間違いはないか

上記で解決できない場合は以下のコードをチェックしてみてください!

jQueryが動かない!

WordPressにはjQueryやPrototypeなどのJavascriptライブラリーもデフォルトでインストールされています。コンフリクトを避けるため、jQuery使用の際は $ の代わりに jQuery を使いましょう。

$("p.neat").addClass("ohmy").show("slow");
// ↑この$部分を jQueryに。

jQuery("p.neat").addClass("ohmy").show("slow");

jQuery.noConflict(); を使ってもOKです。

$j=jQuery.noConflict();

$("p.neat").addClass("ohmy").show("slow");
// ↑この$部分を $j に。

$j("p.neat").addClass("ohmy").show("slow");

Pタグ(パラグラフタグ)が邪魔!

WordPressで記事やページを作成すると自動的に <p> でくくられちゃいます。それを取り除くには functions.phpremove_filter('the_content', 'wpautop'); を追加します。

// これをプラス
remove_filter('the_content', 'wpautop');

特定の箇所のみPタグを無効化

the_content(); の直前に remove_filter を記述して特定の箇所のみPタグを無効化できます。

<?php remove_filter ('the_content', 'wpautop'); ?>
<?php the_content(); ?>

コンタクトフォーム7のPタグも邪魔!

同じくPタグ関連。こちらはプラグインの「コンタクトフォーム7」に自動挿入されるPタグを無効化します。wp-confing.php に下記コードを挿入すればOK。

define( 'WPCF7_AUTOP', false );

ページ送りが動かない!

「次のページへ」をクリックしても次に行かない、プラグイン「WP-PageNavi」を有効化してもうまくページ送りできない、example.com/page/2 ←直接URL書いても表示されない…そんな時は if(have_posts()): の部分に下記を追加してみてください。

<?php if (have_posts()) :  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts( $query_string . "&paged=$paged" );  ?>

複数のページ・投稿を同時に表示したいのに!

WordPressを完全CMS化し複数のページや投稿を並べて表示していると、query_posts でIDを指定していても、先に表示したページ・投稿が表示されてしまう事があります。例えば今見ているこのページ。記事に続いて「関連する記事」「コメント欄」が表示されています。関連する記事を表示する際、クエリーをリセットしないと、コメント欄にはこの記事に対するコメントではなく、「関連する記事」で表示された記事に対するコメントが表示されてしまいます。endwhile;endif; の間にリセットするコード wp_reset_query(); をサクッと入れておきましょう。

<?php endwhile; wp_reset_query(); endif; ?>

もっと詳しいコードは過去記事「プラグインを使わずWordPressに6の機能をつける」の「2. 関連する記事を表示する」が参考になります。

Moreタグが動かない!

同じく複数のページや投稿を並べて表示していると、Moreタグの設定をしていても「続きを読む」が表示されず、全文表示されてしまう事が。私が陥ったケースでは全ページのヘッダー下に「Welcome message」というタイトルのページコンテンツを表示、続いて各記事のタイトル・コンテンツを表示していました。すると「続きを読む」が表示されず、記事の全文が表示されちゃいました。global $more; で無事解消。

<?php global $more; $more = FALSE; ?>
    <?php the_content('続きを読む'); ?>
<?php $more = TRUE; ?>

サムネイル画像のパスが必要!

WordPress 2.9からサムネイル画像の設定が簡単にできるようになりました(WordPress 3.0からはアイキャッチと呼ばれているらしい)。詳しい設定は「WordPress 2.9 の新機能の投稿サムネイル画像の使い方」が非常にわかりやすいです。サムネイル画像を出力する時は the_post_thumbnail(); を記述すればいいのですが、画像のパスが必要だったり、クラスやIDをつけたい場合は下記コードを参照してみてください。

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

if($thumb == ''){
  echo '<img src="sample.jpg" />'; // サンプルの画像を表示
} else {
  echo '<img class="thumb" src=" '.$theSrc.' " />'; // サムネイル画像をクラスを付けて表示
}

ログインしたユーザーのみコンテンツを表示したいのに!

サクッと動作確認したい時にも便利なこのコード。if で囲んだ部分はログインしたユーザーにのみ表示されます。

<?php if (is_user_logged_in()) : ?> 
  ここにコンテンツなど
<?php endif;?>

その他、みなさんが命拾いしたお助けコードがあればぜひ共有しましょう!

シェアする

コメント

“WordPressで困った時に役立つお助けコード8つ” への20件のフィードバック

  1. Nori より:

    あるあるっ!って感じですねー
    Moreタグ動かないってずっと前にはまっちゃった気がしますw
    ページ送りが動かないっていうのも他のブログでちらほら見かけたことあります。
    ふむふむ。
    とっても助かりまーす。
    ホント「お助けコード」ですね。
    ありがとうございます!
    でも…アイキャッチ画像がちょっと怖い(>_<。)

  2. […] 引用元: WordPressで困った時に役立つお助けコード8つ | Webクリエイターボックス. […]

  3. […] ・WordPressで困った時に役立つお助けコード8つ Webクリエイターボックス ちょっぴり助かりました。 […]

  4. […] WordPressで困った時に役立つお助けコード8つ | Webクリエイターボックス […]

  5. […] WordPressで困った時に役立つお助けコード8つ | Webクリエイターボックス (tags: wordpress) […]

  6. […] Manaさんの、 WordPressで困った時に役立つお助けコード8つ […]

  7. Webクリエイターボックス より:

    私も何度もドツボにはまり、4時間かけて悩んでた問題がたったひとつのPHPコードで直ったりしたので…w
    サムネイル画像はその時の私の気持ちですw

  8. […] http://www.webcreatorbox.com/tech/wordpress-help-code/ タグ:Dreamweaver CS5,WordPress,テーマ 2010年9月8日 9:35 PM | カテゴリー: Web « Dreamweaver CS5でWordPressのオリジナルテーマを編集 […]

  9. […] 調べる途中に参考にしたサイトです。 WordPressで困った時に役立つお助けコード8つ | Webクリエイターボックス WordPress 窶コ フォーラム ≫ […]

  10. 石井 より:

    Manaさん
    初めまして。石井と申します。
    初心であつかましいのですが。

    WP二回目ぐらいの初心者ですが。
    トラブってしまっていてあたふたふためいております。
    manaさんってお忙しいですか?
    もしお手すきであればサポートをお願いできませんか?
    どうか一つお願いできればうれしいのですが。
    よろしくお願いします。
    manaさんのエラー項目はチェックしてるのですけど、二カ国語を入れていたので修復難しいです。有料でかまわないですが値段を教えていただければと思います。
    竏停・竏停・竏停・

    WP3.06で 新規サイトを構築しております。
    <a href="”> …read more

    トップ(第二番目)に抜粋+サムネールを3項目表示しておりまして、
    様々触っていたら 全く表示せずトラブっています。
    早速のお願いですが、見ていただくわけには行かないでしょうか?
    設定の方法か? まだ二回目のWPなのでサポートいただけると助かります。
    一昨日は出来ていたのですが、いろいろテンプレートをいじったせいか表示ができなくなりました。

    至急ですみません。こちらからご連絡できます。
    Skype:Becky_moni
    http://gvin.jp/index/?preview=true&preview_id=58&preview_nonce=e09e569938

  11. Webクリエイターボックス より:

    @石井さん
    サイトを見てみましたが、ちゃんと表示されているような?解決しましたか?

  12. […] その方法はこちらを参考に Pタグ(パラグラフタグ)が邪魔! - WEBクリエイターBOX […]

  13. […] WordPressで困った時に役立つお助けコード8つ こちらではアイキャッチ画像の出力コードではなく、imgタグで画像を表示させる方法が。 […]

  14. takapon より:

    // add_filter(‘the_content’, ‘wpautop’);// add_filter(‘the_excerpt’, ‘wpautop’);これやっても…
    これやっても…
    オイラのブログにはautopが付いてる気がするorz

  15. […] 、「remove_filter()」で、フィルターを無効化しただけです。 参考リンク:WordPressで困った時に役立つお助けコード8つ 参考リンク:WordPressの自動挿入されるp,brタグをプラグインを使用しな […]

  16. […] WordPressで困った時に役立つお助けコード8つ記事元のサイト:Webクリエイターボックス このサイトはJavaScriptがオンになっていないと正常に表示されませんWordPressで困った時に役立つお助けコード8つ2010年08月24日WordpressWordPressでコーディング中、「理由はなんだかわかんないけどちゃんと動作してくれない!」なんて事がありませんか?私は度々ありました。その都度ググって解決策を探していたのですが、そのお助けコードメモがEvernoteに結構たまってきたので記事にしてみます。よくわからないけど動かない!という時に試してみてください!お助けコードを使う前に今まで動いていたのに突然動かなくなった!そんな時は慌てず、とりあえず以下を確認してみてください。プラグインが原因で動作しなくなる事が多いですね。有効化しているプラグインをすべて無効化して試す</head>の前に<?phpwp_head();?>があるか</body>の前に<?phpwp_footer();?>があるかPHPコード(特にif構文)に間違いはないか上記で解決できない場合は以下のコードをチェックしてみてください!jQueryが動かな …続きを読む […]

  17. […] さて、これで、OK…と思ったら、記事の「続きを読む」がない…?全文表示されてる!先生ー!Googleせんせー!! WordPressで困った時に役立つお助けコード8つ | Webクリエイターボックス […]

  18. SUPERMARKET より:

    いつも拝見し、参考にさせて頂いております。
    大変優良な情報ありがとうございます。

    今回は、「Pタグ(パラグラフタグ)が邪魔!」の対応についての質問なのですが…
    Wordpress3.5では、pタグを取り除くことはできないのでしょうか?

ニュースレター

Web制作の最新情報やWebクリエイターボックスからのお知らせ、中の人の近況等を定期的にお送りいたします。 ぜひご登録ください!もちろん無料です! :)