<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>functions.php &#8211; WordPressカスタマイズ、サイト作成メモ</title>
	<atom:link href="https://msn100.org/tag/function-php/feed" rel="self" type="application/rss+xml" />
	<link>https://msn100.org</link>
	<description>WordPressサイト制作を手がけるToshiyuki TanakaのFAQ、ヒント、Tipsなどの覚え書きです</description>
	<lastBuildDate>Mon, 20 Oct 2025 03:45:30 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://msn100.org/tag/function-php/feed"/>
	<item>
		<title>bbPressで投稿やコメントの「編集」リンクを常に表示させる方法</title>
		<link>https://msn100.org/wp_plugin/bbpress-edit.html</link>
		
		<dc:creator><![CDATA[Kota]]></dc:creator>
		<pubDate>Mon, 18 Jan 2016 09:32:48 +0000</pubDate>
				<category><![CDATA[WPプラグイン紹介・解説]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[フィルターフック]]></category>
		<category><![CDATA[bbPress]]></category>
		<guid isPermaLink="false">http://msn100.org/?p=329</guid>

					<description><![CDATA[WordPressで掲示板を作成するならbbPressプラグインを導入するのが一般的ですね。私も一つ作成したのですが、管理者権限がない、普通のユーザー（参加者権限）がフォーラムにトピックスを立てたりコメントした場合、管理 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>WordPressで掲示板を作成するならbbPressプラグインを導入するのが一般的ですね。私も一つ作成したのですが、管理者権限がない、普通のユーザー（参加者権限）がフォーラムにトピックスを立てたりコメントした場合、管理画面で設定した分数以上時間が経つと、「編集」リンクが非表示になり、その後は編集が一切できなくなってしまいます。「編集」を常に表示させて、ユーザーがいつでも自分の投稿・コメントを編集できるようにする方法がありましたのでご紹介します。</p>
<p><span id="more-329"></span></p>
<p>bbPressの設定画面には、何分間までなら編集できるかを設定する項目があります。</p>
<p><img fetchpriority="high" decoding="async" src="http://msn100.org/wp/wp-content/uploads/bbpress-editlink-01.png" alt="フォーラムの設定 投稿後編集を許可しない時間の欄" width="330" height="180" class="alignnone size-full wp-image-330" srcset="https://msn100.org/wp/wp-content/uploads/bbpress-editlink-01.png 330w, https://msn100.org/wp/wp-content/uploads/bbpress-editlink-01-300x164.png 300w" sizes="(max-width: 330px) 100vw, 330px" /></p>
<p>bbPress日本語化ファイルで日本語にしていて、「投稿後編集を許可しない時間」となっていますが、実際は「投稿後編集ができる時間」とする方が正しいかと思います。デフォルトでは5分となっており、投稿後5分以内なら投稿者は編集ができるけれども、5分以上経ったら編集ができなくなってしまいます。</p>
<p>より正確には、「編集」というリンクが非表示になってしまいます。</p>
<p><a href="http://msn100.org/wp/wp-content/uploads/bbpress-editlink-02.png"><img decoding="async" src="http://msn100.org/wp/wp-content/uploads/bbpress-editlink-02-580x259.png" alt="コメント欄の「編集」欄が消える" width="580" height="259" class="alignnone size-large wp-image-331" srcset="https://msn100.org/wp/wp-content/uploads/bbpress-editlink-02-580x259.png 580w, https://msn100.org/wp/wp-content/uploads/bbpress-editlink-02-300x134.png 300w, https://msn100.org/wp/wp-content/uploads/bbpress-editlink-02.png 731w" sizes="(max-width: 580px) 100vw, 580px" /></a></p>
<p>「投稿後編集を許可しない時間」を999999など、どれだけ大きな時間にしてもいつかは消えますし、逆に「0」にすると速攻で「編集」リンクは消えます。この期限制限を無効化する方法が、デフォルトでは用意されていないんですね。</p>
<p>どうしてこんなおせっかいな要らない機能(笑)があるのかはわかりません。管理・運営上やセキュリティの問題かもしれませんが、自分の書いた投稿、コメントに問題や間違いを見つけたら、放ってはおけないのが日本人気質な気がします(笑)</p>
<p>いろいろ調べてみて、bbPress本家のSupportフォーラムには「数字じゃなくて x とか文字を入れれば、認識できなくなって機能しなくなるよ！」という裏ワザがあったのですが(笑)、結構古い投稿で、現時点では数字以外は入力できないようになっています。ちなみに空欄のままにして「保存」をすると、ちゃっかりデフォルトの「5」が自動入力されちゃいます。ホントにうっとおしい！(笑)</p>
<p>と、長々と引っ張ってしまいましたが、編集のリンクを設定時間後に非表示にするフィルターがbbPressにセットされているので、そのフィルターを無効にするフィルターフックをfunctions.phpに噛ませればいい、という書き込みをbbPressフォーラムに見つけました！</p>
<p><a href="https://bbpress.org/forums/topic/unlimited-edit-time/" target="_blank">Topic: Unlimited edit time &middot; bbPress.org</a></p>
<p>以下のソースコードをfunctions.phpに記述すればOKです！</p>
<pre class="brush: php; title: ; notranslate">
function no_edit_lock($retval, $cur_time, $lock_time, $post_date_gmt){
	return false;
}
add_filter( 'bbp_past_edit_lock', 'no_edit_lock', 1, 4);
</pre>
<p>bbp_past_edit_lockが「編集」リンクを非表示にするフィルターなので、それを何もさせずにただreturnさせて無効化している、というわけですね。胸のつかえが取れました(笑)</p>
<p>地味～なワザですが、意外と悩んでいらっしゃるbbPressユーザーの方はいらっしゃるかと思います。参考になれば幸いです。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Welcartの領収書類から不要な項目を削除</title>
		<link>https://msn100.org/welcart_customize/welcart_print.html</link>
		
		<dc:creator><![CDATA[Kota]]></dc:creator>
		<pubDate>Sat, 07 Mar 2015 15:38:06 +0000</pubDate>
				<category><![CDATA[Welcartカスタマイズ]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[フィルターフック]]></category>
		<category><![CDATA[PDF]]></category>
		<guid isPermaLink="false">http://msn100.org/?p=277</guid>

					<description><![CDATA[昨日に引き続いてWelcartの領収書、請求書類のPDFカスタマイズです。Welcartが自動生成するPDF類は、内訳に「キャンペーン割引」「ポイント使用」「代引き」といった項目がありますが、これらをPDFに表示させない [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>昨日に引き続いてWelcartの領収書、請求書類のPDFカスタマイズです。Welcartが自動生成するPDF類は、内訳に「キャンペーン割引」「ポイント使用」「代引き」といった項目がありますが、これらをPDFに表示させないカスタマイズをご紹介します。</p>
<p><span id="more-277"></span></p>
<p>このネタもWelcartの「開発フォーラム」に上がっています。</p>
<p><a href="http://www.welcart.com/community/forums/topic/%e7%b4%8d%e5%93%81%e6%9b%b8%e7%ad%89%e3%81%ab%e8%a1%a8%e7%a4%ba%e3%81%99%e3%82%8b%e9%a0%85%e7%9b%ae" target="_blank">[解決済み] 納品書等に表示する項目</a></p>
<p>ただし、ご覧いただくとわかるように、order_print.phpを直接コメントアウトするよう書かれています。プラグインなどの本体ソースを書き換えるのは極力避けたいところですが、記事の日付は2011年の6月とかなり前です。</p>
<p>「もしかして・・・」とWelcart最新版のorder_print.phpを見てみたら、フィルターが付加されていました！</p>
<p>Welcart開発サイドがこういう要望に応えるために用意してくださったのでしょうか。感謝です！</p>
<p>ということで、本体をいじることなくフィルターフックで対応することができます。</p>
<p>内訳項目はラベル（項目名）と値とをそれぞれ出力するようになっており、それぞれに以下のフィルターが用意されています。</p>
<p>キャンペーン割引・ラベル：usces_filter_disnount_label<br />
キャンペーン割引・値：usces_filter_disnount_vlue<br />
代引き・ラベル：usces_filter_cod_label<br />
代引き・値：usces_filter_cod_vlue<br />
使用ポイント・ラベル：usces_filter_point_label<br />
使用ポイント・値：usces_filter_point_vlue</p>
<p>非表示にしたい項目のラベルと値を、functions.phpでフックして空の値を返すようにすれば、PDF上で空欄にすることができます。</p>
<p>たとえば「使用ポイント」を非表示にしたい場合は、</p>
<pre class="brush: php; title: ; notranslate">add_filter( 'usces_filter_point_label', 'my_usces_filter_point_label' );
function my_usces_filter_point_label() {
  return null;
}
add_filter( 'usces_filter_point_vlue', 'my_usces_filter_point_vlue' );
function my_usces_filter_point_vlue() {
  return null;
}</pre>
<p>のように、ラベルと値のフィルターにフックをして、「return null;」で空にしています。</p>
<p>空にしないで、ラベルの方だけフックして名称を変える、なんていう応用もできますね。</p>
<p>先の<a href="http://msn100.org/welcart_customize/welcart_sign.html" title="Welcartの領収書、請求書に印鑑画像を入れる">印鑑挿入</a>と合わせて、独自の領収書類にカスタマイズしてみてください！</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Welcartの領収書、請求書に印鑑画像を入れる</title>
		<link>https://msn100.org/welcart_customize/welcart_sign.html</link>
		
		<dc:creator><![CDATA[Kota]]></dc:creator>
		<pubDate>Sat, 07 Mar 2015 00:00:04 +0000</pubDate>
				<category><![CDATA[Welcartカスタマイズ]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[フィルターフック]]></category>
		<guid isPermaLink="false">http://msn100.org/?p=272</guid>

					<description><![CDATA[Welcartは領収書や請求書を自動でPDF出力する機能がついていて便利なのですね。でも完全自動出力なので、手を加えにくいのが玉にキズです。なんかWordやExcelで作ったみたいで(^^; せめて社印や印鑑画像が入れら [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Welcartは領収書や請求書を自動でPDF出力する機能がついていて便利なのですね。でも完全自動出力なので、手を加えにくいのが玉にキズです。なんかWordやExcelで作ったみたいで(^^;</p>
<p>せめて社印や印鑑画像が入れられれば、と思っていたのですが、実は簡単に挿入できることがわかりました！</p>
<p><span id="more-272"></span></p>
<p>元ネタは何のことはない、本家Welcartの開発フォーラムにまんま紹介されていました(^^ゞ</p>
<p><a href="http://www.welcart.com/community/forums/topic/%e8%ab%8b%e6%b1%82%e6%9b%b8-pdf%e3%80%80%e9%a0%98%e5%8f%8e%e6%9b%b8-pdf%e3%80%80%e3%81%ae%e5%8d%b0%e9%91%91">[解決済み] 請求書 PDF　領収書 PDF　の印鑑</a></p>
<pre class="brush: php; title: ; notranslate">function my_filter_pdf_sign() {
	return get_template_directory() . '/images/*****.png';
}
add_filter( 'usces_filter_pdf_estimate_sign', 'my_filter_pdf_sign' );
add_filter( 'usces_filter_pdf_invoice_sign', 'my_filter_pdf_sign' );
add_filter( 'usces_filter_pdf_receipt_sign', 'my_filter_pdf_sign' );
add_filter( 'usces_filter_pdf_bill_sign', 'my_filter_pdf_sign' );</pre>
<p>最初の関数で、画像のパスとファイル名を指定しています。ここは各自書き換えます。</p>
<p>次の4行のフィルターフックは、上から見積書、納品書、領収書、請求書のそれぞれのPDFに、画像をセットしています。Welcartの会員登録ページでは、ユーザーが領収書と請求書をダウンロードできますが、管理者はさらに管理画面から見積書、納品書も発行できるので、この4種に挿入する、ということですね。</p>
<p>あともうひとつフィルターフックが必要です。</p>
<pre class="brush: php; title: ; notranslate">function my_filter_pdf_sign_data() {
	return array(110, 40, 50, 50);
}
add_filter( 'usces_filter_pdf_sign_data', 'my_filter_pdf_sign_data' );</pre>
<p>こちらは画像の位置とサイズを指定するフィルターフックです。関数の中の配列（array）の4つの数字が、左から画像の横位置、画像の縦位置、画像の幅、画像の高さ、となっています。</p>
<p>PDFですので単位はpxではなくインチなのか何なのか、よくわからなくて私は何度もリロードして調整したのですが(^^;、横位置の「110」の値はちょうど領収書右側のサイト名、社名、住所等の位置と同じですので、左揃えでいい場合は110のままでいいと思います。</p>
<p>画像サイズは正方形なら楽なのですが、長方形の場合は縦横の比率を計算して指定しないと画像が歪むのでご注意ください。</p>
<p>やはり印鑑が入るだけで印象も違ってきますね。ぜひ活用してください。</p>
<p>またその他のPDFに出力される項目のカスタマイズについては、やはりフィルターフックでの対応になります。PDF出力は「usc-e-shop」＞「includes」内の「order_print.php」が行っていますので、このファイル内のフィルターを見れば他にもいろいろカスタマイズできると思います。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Welcartのメールの送信者名を変更する</title>
		<link>https://msn100.org/welcart_customize/welcart_mail.html</link>
		
		<dc:creator><![CDATA[Kota]]></dc:creator>
		<pubDate>Tue, 24 Feb 2015 09:17:55 +0000</pubDate>
				<category><![CDATA[Welcartカスタマイズ]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[メール]]></category>
		<category><![CDATA[フィルターフック]]></category>
		<guid isPermaLink="false">http://msn100.org/?p=260</guid>

					<description><![CDATA[WordPressでオンラインショップが手軽に制作できるWelcartプラグイン。テーマカスタマイズの自由度が非常に高いのでよく利用しており、機能的なカスタマイズも少しずつ学んでいます。 今回のカスタマイズは、自動送信メ [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>WordPressでオンラインショップが手軽に制作できる<a href="http://www.welcart.com/" target="_blank">Welcartプラグイン</a>。テーマカスタマイズの自由度が非常に高いのでよく利用しており、機能的なカスタマイズも少しずつ学んでいます。</p>
<p>今回のカスタマイズは、自動送信メールの差出人名を変更する方法です。Welcartが送信するメールの送信者名は、デフォルトではサイト名が入りますので、これを任意の文字列に変えてみます。</p>
<p><span id="more-260"></span></p>
<p>そもそも変更の理由なんですが、サイト名はSEOを意識して、ショップ名や会社名の前にキーワードやキャッチを盛り込んでいる場合があります。</p>
<p>「南フランス・ブルゴーニュのビンテージワインを送料無料でお届け おフランス屋」みたいな場合（これがSEO的にいいかどうかはビミョーとしても(笑)）、注文後のサンキューメールや受注メールの送信者名までがこう長々となるのはやはり考え物ですよね。差出人はシンプルに「おフランス屋」でいいのではないかと。</p>
<p>ということで具体的な変更方法ですが、フィルターフックでカスタマイズしてfunctions.phpに記述を追加します。</p>
<p>送信メールの設定は、Welcartプラグイン本体内の「functions」フォルダ内の「function.php」に記載されています。各種メールごとに</p>
<pre class="brush: php; light: true; title: ; notranslate">'from_name' =&gt; get_option('blogname'),</pre>
<p>という形で配列に格納しています。その配列に対してフィルターが用意されているので、そのフィルターをfunctions.phpでフックして書き直せばいい、ということになります。</p>
<p>ちなみにメールの送信準備をするための関数は、</p>
<ul>
<li>usces_ajax_send_mail()：管理画面から手動送信する各種メール</li>
<li>usces_send_ordermail()：自動返信のサンキューメール</li>
<li>usces_send_regmembermail($user)：入会完了後連絡メール</li>
<li>usces_send_delmembermail($user)：退会完了連絡メール</li>
<li>usces_lostmail($url)：パスワード再設定時の連絡メール</li>
</ul>
<p>だと思います。これらの関数内で、&#8217;from_name&#8217; => get_option(&#8216;blogname&#8217;) で送信者名をサイト名にして配列に格納していますので、その後に出てくるフィルターをフック、str_replace関数でサイト名を置換して書き換えます。</p>
<p>ソースコードは以下のようになります。</p>
<pre class="brush: php; title: ; notranslate">
// 管理画面から手動送信する各種メール
add_filter( 'usces_ajax_send_mail_para_to_customer', 'my_usces_ajax_send_mail_para_to_customer', 10, 3 );
function my_usces_ajax_send_mail_para_to_customer( $confirm_para ) {
  return str_replace( 'サイト名', '変更したい差出人名', $confirm_para );
}

// 自動返信のサンキューメール
add_filter( 'usces_send_ordermail_para_to_customer', 'my_usces_send_ordermail_para_to_customer', 10, 3 );
function my_usces_send_ordermail_para_to_customer( $confirm_para, $entry, $data ) {
  return str_replace( 'サイト名', '変更したい差出人名', $confirm_para );
}

// 入会完了後連絡メール
add_filter( 'usces_filter_send_regmembermail_para1', 'my_usces_filter_send_regmembermail_para1', 10, 3 );
function my_usces_filter_send_regmembermail_para1( $para1 ) {
  return str_replace( 'サイト名', '変更したい差出人名', $para1 );
}

// 退会完了連絡メール
add_filter( 'usces_filter_send_delmembermail_para1', 'my_usces_filter_send_delmembermail_para1', 10, 3 );
function my_usces_filter_send_delmembermail_para1( $para1 ) {
  return str_replace( 'サイト名', '変更したい差出人名', $para1 );
}

// パスワード再設定時の連絡メール
add_filter( 'usces_filter_send_lostmail_para1', 'my_usces_filter_send_lostmail_para1', 10, 3 );
function my_usces_filter_send_lostmail_para1( $para1 ) {
  return str_replace( 'サイト名', '変更したい差出人名', $para1 );
}
</pre>
<p>フィルター名と配列名を間違えないよう気をつけてください。元の配列には他に送信先のメールアドレスや名前、返信先等も含まれていますので、必要があればこれらも同様に書き換えることはできるかと思います。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>『「公式ディレクトリ掲載テーマ」で学ぶ WordPressサイト制作入門』をいただきました</title>
		<link>https://msn100.org/memos/wp-books01.html</link>
		
		<dc:creator><![CDATA[Kota]]></dc:creator>
		<pubDate>Mon, 18 Nov 2013 15:49:03 +0000</pubDate>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[書評]]></category>
		<guid isPermaLink="false">http://msn100.org/?p=195</guid>

					<description><![CDATA[WordPress関係の書籍も本当にたくさん出ていますが、今月発売された『「公式ディレクトリ掲載テーマ」で学ぶ WordPressサイト制作入門』のモニター募集に応募したところなんと当選！　ということで書評を書かせていた [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>WordPress関係の書籍も本当にたくさん出ていますが、今月発売された『「公式ディレクトリ掲載テーマ」で学ぶ WordPressサイト制作入門』のモニター募集に応募したところなんと当選！　ということで書評を書かせていただきます。</p>
<p><span id="more-195"></span></p>
<p><a href="http://www.amazon.co.jp/gp/product/4797372370/ref=as_li_ss_tl?ie=UTF8&amp;camp=247&amp;creative=7399&amp;creativeASIN=4797372370&amp;linkCode=as2&amp;tag=undertheredsk-22"><img decoding="async" class="size-full wp-image-198 alignleft" alt="book01-cover" src="http://msn100.org/wp/wp-content/uploads/book01-cover.jpg" width="300" height="300" srcset="https://msn100.org/wp/wp-content/uploads/book01-cover.jpg 300w, https://msn100.org/wp/wp-content/uploads/book01-cover-150x150.jpg 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>自分は滅多に抽選など当たらないので、これでもう人生の運を使い果たしてしまったんじゃないかと当選通知でちょっと怖くなりましたが(笑)、まだまだ勉強中の自分にはこれ幸いと、有り難く拝読させていただきました。</p>
<p>モニターの条件は書評を書くことですが、太っ腹にも「別にムリにいい評価にしないで構いません。思ったことを書いてください。率直な感想をお願いします」とおっしゃっていただいてますので、率直に(笑)書かせていただこうと思います。</p>
<p>まずは目次。本書は以下のような構成になっています。</p>
<blockquote><p>第1章 WordPressでWebサイトを作ろう<br />
1-0　この章の概要<br />
1-1　本書の読み方とその目標<br />
1-2　学習用開発環境の構築とWordPressのインストール<br />
1-3　Webサイトを形成するWordPressテーマ<br />
1-FT　これからWordPressをはじめる人へ</p>
<p>第2章 デフォルトテーマからWordPressとテーマの基本を学ぼう<br />
2-0　この章の概要<br />
2-1　デフォルトテーマとは<br />
2-2　Twenty Thirteenで表現できるコンテンツの種類<br />
2-3　WordPressテーマの仕様<br />
2-4　Twenty Thirtyeen各テンプレートファイルのポイント解説<br />
2-FT　テーマ開発に役立つWebブラウザの開発ツール</p>
<p>第3章 オリジナルテーマ開発フロー ～基礎編～<br />
3-0　この章の概要<br />
3-1　まずはオリジナルテーマ「sonoichi」を使ってみよう<br />
3-2　オリジナルテーマ開発の全体像を把握する<br />
3-3　WordPress実装前に下準備をする<br />
3-4　WordPressテーマを実装する<br />
3-FT　デフォルトテーマをカスタマイズする５つの方法</p>
<p>第4章 オリジナルテーマ開発 ～応用編～<br />
4-0　この章の概要<br />
4-1　テンプレート改装を活用する<br />
4-2　functions.phpでテーマの応用的な実装をする<br />
4-3　翻訳ファイルを使ってテーマを多言語対応に<br />
4-4　テーマ実装後の動作確認をする<br />
4-FT　オリジナルテーマ「sonoichi」でカスタマイズの練習をする</p>
<p>第5章 テーマを目的に合わせて独自にカスタマイズする<br />
5-0　この章の概要<br />
5-1　各投稿にソーシャルボタンを設置する<br />
5-2　Twitterタイムラインをサイドバーに表示する<br />
5-3　個別投稿ページに関連投稿リンクを表示する<br />
5-FT　プラグイン利用で広がるWordPress活用法</p></blockquote>
<p>第１章は概略と環境の準備、WPのインストールなどの説明です。XAMPやMAMPの導入などは、他の本などでもいくらでも紹介されているのでもうお馴染みの方も多いのではないでしょうか。</p>
<p>第２章から実質的な内容になります。</p>
<p>まずはWPの基本的な使い方、仕様の説明の後、現時点で最新の公式デフォルトテーマ、Twenty Thirteenの解説になります。</p>
<p>Twenty Thirteenの特徴の一つは「投稿フォーマット」が豊富になったことだと思います。本書では全部の投稿フォーマットと、functions.phpとの関係も説明されていて、この点は投稿フォーマットが全然わかってない＆使ったことない自分にはとても参考になりました。</p>
<p>2-4章ではTwenty Thirteenの各テンプレートのソースを解説しています。<br />
Twenty Thirtheenを使わない人も多いと思いますが、Twenty Thirteenに限らないWPテーマ共通のタグや処理などの説明がされているので、どんなテンプレートを使う／カスタマイズするにしても、読んでおいて損はないと思います。</p>
<p>さて、第３章からいよいよ実作業的な内容に入っていきます。</p>
<p>ここではTwenty Thirteenと、筆者オリジナルテーマのsonoichiとのソースを比較しながら説明しています。</p>
<p>筆者の意図は、PHPがわからなくても、テーマのPHPはそのまま残しておいて、それ以外のHTML部分を変えるだけでもかなりカスタマイズはできる。自分でテーマをフルビルドする場合でも、公式のテンプレをベースにして作った方がいいですよ、ということのようです。</p>
<p>参考や勉強のために、まず既存のテーマを利用するのは自分もいいと思います。ただ、HTMLだけではやはりカスタマイズの限界がすぐ来てしまうので、PHPをいじるのはいずれ避けられないはずです。「HTML・CSSはわかるけどPHPが・・・」というのが一番WordPress初心者はつまずくところだと思うので、テンプレートタグやfunctions.phpなどへの取っかかりを、もう少し丁寧に説明した方がよかったのでは、とは感じました。</p>
<p>たとえば「前後ページへのページネーションの、矢印を＜＜や＞＞に変更する」というカスタマイズでは、「独自関数ですからfunctions.phpを覗いてみましょう」「twentythirteen_page_nav関数の引数を書き換えてみましょう」「はい、書き換わりましたね」と順々に説明されていますが、初心者としては、自分のカスタマイズしたいことはどのファイルのどこをいじればいいのかの見当がつかなくて、苦労することが多いと思うんです。</p>
<p>同様に「カレンダーウィジェットの＜＜と＞＞を矢印に変えましょう」という節でも、「カレンダーウィジェットには、出力直前に「get_calendar」というフィルターフックが用意されています。（中略）以下のようにfunctions.phpに記述します。」という流れで、書いてあるとおりにやればカスタマイズはできますが、ここに書かれていないカスタマイズをしたい場合はどこをどうしたらいいのか、フックを使っているならそれはどうやって調べたらいいのか、といったことの説明はありません。</p>
<p>ですので、説明は参考にはなるけれども、応用が利かせにくいなぁ、とこの段階で感じました。</p>
<p>第４章、５章はやや難易度が上がります。特に「5-2　Twitterタイムラインをサイドバーに表示する」と「5-3　個別投稿ページに関連投稿リンクを表示する」は、ウィジェットの登録や、メインループ、サブループなど、かなり使い手のあるカスタマイズが紹介されています。</p>
<p>両方ともプラグインで実現はできると思いますが、敢えて手でソースを書くことで、これらの仕組みを把握してほしい、と筆者の方は考えられたのでしょう。その意図はわかります。が、そうであるならば、もう少しここのPHPのソースも、それこそ一行一行解説をしていって、他の使い方への応用しやすくなるような配慮をして欲しかった、と思いました。</p>
<p>総じての感想ですが、初心者から中級者へのステップアップ向けで、実習よりも理解重視、公式テーマを解説することで正しい知識、正しい書式などを得られる点はマル、ただし応用や逆引き事典的な使い方がしにくいのが残念な点、でした。</p>
<p>個人的にはフックやフィルター、ウィジェット登録、メインループとサブループへの取っかかりができたのが一番の収穫でした。</p>
<p>以上、WP本の個人的な書評でした。モニター当選させてくださったSBクリエイティブの三津田治夫様にお礼申し上げます。どうもありがとうございました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>画像キャプション回りのHTMLタグをカスタマイズする</title>
		<link>https://msn100.org/code/caption_html.html</link>
					<comments>https://msn100.org/code/caption_html.html#comments</comments>
		
		<dc:creator><![CDATA[Kota]]></dc:creator>
		<pubDate>Thu, 21 Feb 2013 15:44:12 +0000</pubDate>
				<category><![CDATA[ソースコード改変]]></category>
		<category><![CDATA[ショートコード]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[画像]]></category>
		<category><![CDATA[キャプション]]></category>
		<category><![CDATA[HTMLタグ]]></category>
		<guid isPermaLink="false">http://msn100.org/?p=177</guid>

					<description><![CDATA[画像にキャプションを入れると、WordPressは画像タグを&#60;img&#62;タグで囲み、キャプションを&#60;p&#62;タグで囲んで、それらを&#60;div&#62;でくくって、さらにstyle属性で「画像＋10px [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>画像にキャプションを入れると、WordPressは画像タグを&lt;img&gt;タグで囲み、キャプションを&lt;p&gt;タグで囲んで、それらを&lt;div&gt;でくくって、さらにstyle属性で「画像＋10px」の横幅を指定してしまいます。こういうソースですね。</p>
<pre class="brush: xml; light: true; title: ; notranslate">&lt;div id=&quot;attachment_65&quot; class=&quot;wp-caption alignleft&quot; style=&quot;width: 130px&quot;&gt;</pre>
<p>これは画像が120pxの例です。このwidth属性でレイアウトの自由度が損なわれるので、この指定を削除する、あるいは任意のclassを追加する、といったカスタマイズ法です。ソースコードはいじらず、function.phpへの記述追加で可能です。<br />
<span id="more-177"></span></p>
<p>このHTMLタグを吐き出しているのは、<strong>wp-include内のmedia.php</strong>です。Ver3.51のmedia.phpでは654行目に</p>
<pre class="brush: php; light: true; title: ; notranslate">return '&lt;div ' . $id . 'class=&quot;wp-caption ' . esc_attr($align) . '&quot; style=&quot;width: ' . (10 + (int) $width) . 'px&quot;&gt;'</pre>
<p>という記述があり、ここで取得した画像の横幅$widthに10を加えてstyleのwidthとして入れています。</p>
<p>ですのでこの行を書き換えれば出力されるタグも変更できますが、やはりコアファイルはいじりたくないものです。WPのバージョンアップのたびに書き直さないとなりませんし。</p>
<p>こういう出力ソースを変更したい場合は、たいがいフィルターで処理するのですが、ここはショートコードで処理されています。ショートコードは自分でPHPソースなどを文中に挿入するときなどに使うもので、ユーザーが作成するものと思いがちですが、WPのデフォルトでいくつか（４つと以前聞きました）仕込まれているショートコードもあり、このキャプション回りもその一つです。</p>
<p>ですのでフィルターではうまく処理ができませんでした（もちろん私の技術力不足の可能性も大ですが）。そこで、ショートコードを加えているなら、オリジナルのショートコードを作成して、それを好きな出力設定に変更して適応させる、という方法にしてみたらうまくいきました。</p>
<p>そのやり方ですが、media.phpでは、まず</p>
<pre class="brush: php; light: true; title: ; notranslate">add_shortcode('caption', 'img_caption_shortcode');</pre>
<p>で <strong>img_caption_shortcode</strong> というショートコードを caption に適応させていることがわかります（610行目）。この行をコピーしてfunction.phpにペースとして、ショートコード名をオリジナルに変更します。</p>
<pre class="brush: php; light: true; title: ; notranslate">add_shortcode('caption', 'my_img_caption_shortcode');</pre>
<p>のように、 <strong>my_img_caption_shortcode</strong> を適応させるようにします（名称は任意です）。</p>
<p>そして、media.phpの628行目から始まるimg_caption_shortcodeの中身を626行目まで丸ごとコピーして、これもfunction.phpにペースト。</p>
<p>そして、まずfunction名の「img_caption_shortcode」を、自分が付けた新しい名前（今の例ではmy_img_caption_shortcode）に変更して、あとは自分が出力したいように中身を書き換えればOKです。基本的には最後の <strong>return</strong> 以降の部分の書き換えになると思います。私はstyel属性を削除したかったので、こんなふうにその部分を除いたソースにしました。</p>
<pre class="brush: php; highlight: [25]; title: ; notranslate">function my_img_caption_shortcode($attr, $content = null) {
	if ( ! isset( $attr&#x5B;'caption'] ) ) {
		if ( preg_match( '#((?:&lt;a &#x5B;^&gt;]+&gt;\s*)?&lt;img &#x5B;^&gt;]+&gt;(?:\s*&lt;/a&gt;)?)(.*)#is', $content, $matches ) ) {
			$content = $matches&#x5B;1];
			$attr&#x5B;'caption'] = trim( $matches&#x5B;2] );
		}
	}

	$output = apply_filters('img_caption_shortcode', '', $attr, $content);
	if ( $output != '' )
		return $output;

	extract(shortcode_atts(array(
		'id'	=&gt; '',
		'align'	=&gt; 'alignnone',
		'width'	=&gt; '',
		'caption' =&gt; ''
	), $attr));

	if ( 1 &gt; (int) $width || empty($caption) )
		return $content;

	if ( $id ) $id = 'id=&quot;' . esc_attr($id) . '&quot; ';

	return '&lt;div ' . $id . 'class=&quot;wp-caption ' . esc_attr($align) . '&quot;&gt;'
	. do_shortcode( $content ) . '&lt;p class=&quot;wp-caption-text&quot;&gt;' . $caption . '&lt;/p&gt;&lt;/div&gt;';
}</pre>
<p>classやHTMLタグを入れたり、といった改変も可能なはずです。</p>
<p>もしかしたらもっとスマートなやり方があるかもしれませんので、ご存じの方は教えていただければ幸いです。</p>
<p>ちなみに以下のページの「ギャラリーのカスタマイズ法」を参考に、キャプション部分に応用してトライしてみました。どうもありがとうございました。</p>
<p>参考：<a href="http://y2web.net/blog/inet/wp/gallery-customize-618/">y2blog » WordPressの『ギャラリー』をカスタマイズする</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://msn100.org/code/caption_html.html/feed</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>投稿画面に任意の表示エリアを追加</title>
		<link>https://msn100.org/dashboard/contents-box.html</link>
					<comments>https://msn100.org/dashboard/contents-box.html#comments</comments>
		
		<dc:creator><![CDATA[Kota]]></dc:creator>
		<pubDate>Wed, 23 Jan 2013 10:41:50 +0000</pubDate>
				<category><![CDATA[ソースコード改変]]></category>
		<category><![CDATA[ダッシュボード]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[投稿画面]]></category>
		<guid isPermaLink="false">http://msn100.org/?p=89</guid>

					<description><![CDATA[以前「ダッシュボードにメモ欄を追加する」記事を書きましたが、今度は管理画面の投稿画面に、メモなどの任意のコンテンツを表示するエリアを追加する方法です。 追加するには、functions.phpに以下のコードを追加します。 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>以前「<a title="ダッシュボードにメモ欄を追加する" href="http://msn100.org/wp_plugin/headache.html">ダッシュボードにメモ欄を追加する</a>」記事を書きましたが、今度は管理画面の投稿画面に、メモなどの任意のコンテンツを表示するエリアを追加する方法です。</p>
<p><span id="more-89"></span></p>
<p>追加するには、<strong>functions.php</strong>に以下のコードを追加します。</p>
<pre class="brush: php; highlight: [7]; title: ; notranslate">
function add_free_box() {
  global $post;
  echo '
エリア内のコンテンツ文

';
}

function add_free_box_hooks() {
  add_meta_box('free_box', '表示エリアタイトル', 'add_free_box', 'post', 'side', 'high');
}

function add_free_box_init() {
  add_action('admin_menu', 'add_free_box_hooks');
}

add_action('init', 'add_free_box_init');</pre>
<p>以上のソースを追加すると、投稿画面の右サイドバーに表示エリアが追加されます。</p>
<div id="attachment_91" style="width: 305px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-91" class="size-full wp-image-91" alt="引き数が'side'の場合" src="http://msn100.org/wp/wp-content/uploads/contents_box01.png" width="295" height="331" /><p id="caption-attachment-91" class="wp-caption-text">引き数が&#8217;side&#8217;の場合</p></div>
<p>ソース内の <strong>add_meta_box()</strong> 関数の5番目の引き数を「<strong>side</strong>」にしているので、投稿画面のサイドバーに表示されます。これを「<strong>normal</strong>」にすると、投稿本文エリア側に表示されます。</p>
<div id="attachment_93" style="width: 546px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-93" class="size-full wp-image-93" alt="引き数をnormalにした場合" src="http://msn100.org/wp/wp-content/uploads/contents_box02.png" width="536" height="557" /><p id="caption-attachment-93" class="wp-caption-text">引き数が&#8217;normal&#8221;の場合</p></div>
<p>また4番目の引き数を「post」にすると投稿画面に、「page」にすると固定ページ画面に、またカスタム投稿タイプのスラッグを入れるとそのカスタム投稿タイプ画面に表示されます。</p>
<p>参考：<a href="http://kachibito.net/wordpress/admin-area-customize.html">WordPressをクライアントワークで使用する際に覚えておくと良さそうな管理画面のカスタマイズ用コードいろいろ &#8211; かちびと.net</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://msn100.org/dashboard/contents-box.html/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>メタタグのWPのバージョン情報をヘッダー内から削除する</title>
		<link>https://msn100.org/code/no_version.html</link>
		
		<dc:creator><![CDATA[Kota]]></dc:creator>
		<pubDate>Mon, 17 Dec 2012 16:42:27 +0000</pubDate>
				<category><![CDATA[ソースコード改変]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[メタタグ]]></category>
		<category><![CDATA[バージョン情報]]></category>
		<guid isPermaLink="false">http://msn100.org/?p=18</guid>

					<description><![CDATA[WordPressはデフォルトでは、htmlヘッダー内に以下のメタタグが自動的に挿入されます。 &#60;meta name=&#34;generator&#34; content=&#34;WordPress 3. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>WordPressはデフォルトでは、htmlヘッダー内に以下のメタタグが自動的に挿入されます。</p>
<pre class="brush: xml; light: true; title: ; notranslate">&lt;meta name=&quot;generator&quot; content=&quot;WordPress 3.5&quot; /&gt;</pre>
<p>バージョン情報が記載されたままだと、そのバージョンの脆弱性を衝く攻撃を受ける可能性があります。また個人的には（WordPressにはお世話になってますが）一般のサイトなどでは、WPを使っている、ということを明示したくない場合があります。<span id="more-18"></span></p>
<p>そこでこのメタタグを挿入させないようにする方法です。</p>
<p>使っているテーマファイルの「<strong>functions.php</strong>」を開いて、以下の一文を追加するだけです。</p>
<pre class="brush: php; light: true; title: ; notranslate">remove_action('wp_head','wp_generator');</pre>
<p>ちょっとした小技ですが、覚えておきたいネタです。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
