web制作備忘録(自分用)

php,javascript,wordpress等のサンプルコードとか

カテゴリ:コーディング > wordpress

Wordpressの自動成型の機能を解除すると、自動でPタグが入るのを防げるので便利なのだが、 改行タグを入れないと改行されなくなるため、クライアントが入力する際には不便です。 autopの機能は解除しつつ、改行を反映させるにはどうしたらいいか?

①autopを解除。
②出力される文字列にnl2br()をかます。

この手順でやってみました。

①autopを解除
function.phpに下記を追加
remove_filter('the_content', 'wpautop');// 記事の自動整形を解除・無効にする
remove_filter('the_excerpt', 'wpautop');// 抜粋の自動整形を解除・無効にする

②出力される文字列にnl2br()をかます。
本文の出力を下記のようにすればいい。
echo nl2br(get_the_content());

しかし、

これだとHTMLでごにょごにょしたい時に改行全部反映されるので、不便。。。

なんで下記のようにしてみた。
if(post_custom('noautotext')){
	echo nl2br(get_the_content());
}else{
	the_content();
}

カスタムフィールドで、noautotextとか適当にチェックボックスをいれて、 自動で改行したい時と、HTMLで書きたいときを振り分けることにしました。

今更FacebookのOGP設定でつまづいてしまった。。。

いつも通りOGP設定のタグを書いてアップし、確認のためスマホからシェアしてみたところ、 Facebook用の画像が表示されない。

いろいろ試した結果、URLにファイル名(index.html)が入っているときは画像が表示される。。。 スラッシュで終わるURLだとエラーになるのか?? ほかのページも確認すると同じようにOGPの設定しているけど、 URLはどちらでも画像が表示されるのに。。。

色々調べながら試行錯誤しているうちに、Facebookデバッガ―というツールを発見!

URLを調べるとやはりスラッシュで終わっているURLだけエラーになっている!!

けどどうしたらいいんだか分らなかったので、とりあえず「もう一度スクレイピング」というボタンを押してみた。

シェアデバッガー   開発者向けFacebook

治った!!!!

なんかわからんが、OGPの情報は一度スクレイピングされるとキャッシュされて、次からは情報が使われるようだ。OGPの更新を行ったときにはFacebookデバッガ―でスクレイピングし直せってことやね。

Wordpressで本文やカスタムフィールドを出力しようと思ったら改行が反映されなかったので調べました。

解決方法は、Wordpressで出力された文字の改行文字をHTMLタグの改行タグに置き換える nl2br() というPHPの文字列を操作する関数を入れるだけ。

[構文]
nl2br() ※文書内(ソース内)の改行文字をhtmlの<br>に置き換える文字列関数

[用例]
php
echo nl2br( get_post_meta($post_id, $key, $single) );

get_post_meta($post_id, $key, $single)の部分はWPの出力タグ。

wordpressで特定のカテゴリーのアーカイブページ(category-$slug.php)にて記事一覧を作成したいときのサンプルコード

表示する内容

  • 画像サムネイル(アイキャッチ)
  • 記事タイトル
  • 更新日
  • 本文テキスト(70文字)

サンプルではカテゴリーのスラッグ名を【sample】とする。

<section>
	<?php query_posts('category_name=sample&posts_per_page=10'); ?>
	<?php if (have_posts()) : while (have_posts()) : the_post();?>
		<article>
			<a href="<?php the_permalink() ?>">
				<figure><?php the_post_thumbnail('thumbnail'); ?></figure>
				<h1><?php the_title(); ?></h1>
				<time datetime="<?php the_time('Y-m-d'); ?>"><?php the_time('Y年m月d日'); ?>更新</time>
				<p><?php echo mb_substr(strip_tags($post-> post_content),0,70).'...'; ?></p>
			</a>
		 </article>
	<?php endwhile; endif; ?>
</section>

↑このページのトップヘ