<?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>カスタムフィールド アーカイブ - studioDoghands</title>
	<atom:link href="https://www.doghands.com/tag/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.doghands.com/tag/カスタムフィールド/</link>
	<description>スタジオ・ドッグハンズ-運用しやすいホームーページを制作する会社です。</description>
	<lastBuildDate>Fri, 15 Mar 2024 12:49:42 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.doghands.com/wp-content/uploads/cropped-favicon-1-32x32.png</url>
	<title>カスタムフィールド アーカイブ - studioDoghands</title>
	<link>https://www.doghands.com/tag/カスタムフィールド/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">58793406</site>	<item>
		<title>カスタムフィールドで登録した情報をやっぱりカスタムタクソノミーに移行してみる</title>
		<link>https://www.doghands.com/convert_data_from_custom_field_to_custom_taxonomy/</link>
		
		<dc:creator><![CDATA[hiro]]></dc:creator>
		<pubDate>Tue, 18 Feb 2020 06:12:25 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ウェブ制作・運用]]></category>
		<category><![CDATA[カスタムフィールド]]></category>
		<category><![CDATA[カスタムタクソノミー]]></category>
		<category><![CDATA[WordPress全般]]></category>
		<guid isPermaLink="false">https://www.doghands.com/?p=12639</guid>

					<description><![CDATA[<p><img width="450" height="191" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021829-450x191.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" fetchpriority="high" /></p>
<p>大量の記事のカスタムフィールドの内容を、新規で作成したカスタムタクソノミーに移動したい。 リニューアルや引き継ぎ案件でたまーに発生する作業です。 まず、サイトに掲載するデータをカスタムフィールドにするか、カスタムタクソノ</p>
<p>投稿 <a href="https://www.doghands.com/convert_data_from_custom_field_to_custom_taxonomy/">カスタムフィールドで登録した情報をやっぱりカスタムタクソノミーに移行してみる</a> は <a href="https://www.doghands.com">studioDoghands</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<p><img width="450" height="191" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021829-450x191.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" /></p><p>大量の記事のカスタムフィールドの内容を、新規で作成したカスタムタクソノミーに移動したい。<br />
リニューアルや引き継ぎ案件でたまーに発生する作業です。</p>
<p>まず、サイトに掲載するデータをカスタムフィールドにするか、カスタムタクソノミーにするか、これは明確な場合もあれば、迷う場合もあります。<br />
データが一意であればカスタムフィールドにしておけば良いのですが、サイトを長らく運用しているうちに「あれ？これ結構何回も使うぞ？カスタムタクソノミーにして選択式の方が良かったかも。」という状況が発生することもあります。</p>
<p>例えば、<br />
毎回異なる調味料を紹介するサイト。カスタムフィールド「今日の調味料」を作成。<br />
数年経つうちにレシピサイト寄りに路線変更。また、最初は単発の扱いであった「ハリッサ」のレシピが好評で、カスタムフィールド「今日の調味料」に「ハリッサ」が登録されている記事だけでも数十に。</p>
<p>こんな場合、明らかに「今日の調味料」はカスタム投稿タイプにしておいた方が運用が楽で、また「ハリッサを使ったレシピ一覧」の表示も簡単です。</p>
<p>弊社では「後々面倒にならない。運用が楽」であることを最も重視しているので、上記のようなことはめったに起こりませんが、既存のサイトではたまにみる設計です。</p>
<p>今回は、「カスタムフィールド」を利用して多くの記事を書いてしまったが、この「カスタムフィールド」に登録した単語を「カスタムタクソノミー」に移動、記事の他の部分には手を加えない。という作業をしてみます。</p>
<h2>作業の順序</h2>
<p>作業の順序はこのような感じになります。<br />
1.カスタムフィールドを含んだ投稿をCSVでエクスポート<br />
2.タクソノミー登録用にCSVを加工する。<br />
3.タクソノミーを一気に登録する。<br />
4.タクソノミーと関連付けた投稿CSVをインポートして投稿を上書き<br />
5.カスタムフィールドの削除等の仕上げ</p>
<p>それでは実際に作業してみます。</p>
<h2>1.カスタムフィールドを含んだ投稿をCSVでエクスポート</h2>
<p>これはプラグインを利用します。<br />
今回は「<a href="https://wordpress.org/plugins/wp-all-export/" rel="noopener noreferrer" target="_blank">WP All Export」</a>を使ってみましょう。<br />
<img decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021801.png" class="alignnone size-full wp-image-12644" alt="" width="700" height="228"></p>
<p>投稿タイプを選択してから、エクスポートするデータの項目の設定に進みます。<br />
<img decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021802.png" class="alignnone size-full wp-image-12645" alt="" width="700" height="507"></p>
<p>エクスポートするデータを選択します。<br />
プラグイン「Advanced Custom Fields」（ACF）を利用したカスタムフィールドのラベルは「ACF」に表示されています。<br />
該当のラベルを中央にドラッグします。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021803.png" class="alignnone size-full wp-image-12646" alt="" width="700" height="339"></p>
<p>インポート時はIDで上書きする投稿を判別するので、「Title」や「Content」は枠外にドラッグしてクリアしても良いでしょう。</p>
<p>設定完了後、CSV形式でローカルに保存します。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021804.png" class="alignnone size-full wp-image-12647" alt="" width="700" height="300"></p>
<h2>2.タクソノミー登録用にCSVを加工する。</h2>
<p>ローカルに保存したCSVは<br />
・タクソノミー登録用<br />
・投稿上書き用<br />
の2種類に分けることになります。<br />
まずは「タクソノミー登録用」にCSVを加工しましょう。</p>
<h3>GoogleスプレッドシートにCSVをアップする</h3>
<p>エクセルでもLibreOfficeでも何でも良いと思いますが、今回はGoogleスプレッドシートで加工してみます。<br />
空のスプレッドシートを作成し、ローカルのCSVをインポートします。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021805.png" class="alignnone size-full wp-image-12648" alt="" width="574" height="399"></p>
<p>「現在のシートを置換する」をチェックしてインポートします。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021806.png" class="alignnone size-full wp-image-12649" alt="" width="304" height="235"></p>
<p>こんな感じでずらっと表が作成されます。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021807.png" class="alignnone size-full wp-image-12650" alt="" width="369" height="451"></p>
<p>タクソノミー作成用の表を作るので、まずはシートをコピーして「タクソノミー抽出作業」のような名前を付けておきましょう。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021808.png" class="alignnone size-full wp-image-12651" alt="" width="297" height="116"></p>
<h3>Googleスプレッドシートで加工</h3>
<p>加工に入ります。<br />
この作業では、カスタムフィールド以外の情報は必要が無いので削除しておきます。<br />
下の場合、「Id」と「Title」列は必要ありません。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021809.png" class="alignnone size-full wp-image-12652" alt="" width="334" height="166"></p>
<p>下はカスタムフィールドのみ残した列のイメージです。<br />
fruitsというフィールドに、みかんやいちご等の単語が並びます。<br />
これらをタクソノミーとしてサイトに登録するために、まずは「<strong>重複</strong>」を消していきます。</p>
<h3>単語の重複を排除する</h3>
<p>重複の削除は簡単です。</p>
<p>列を選択して、上部の「データ」から「重複を削除」をクリックして完了です。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021811.png" class="alignnone size-full wp-image-12653" alt="" width="598" height="614" srcset="https://www.doghands.com/wp-content/uploads/cf2ct-20021811.png 598w, https://www.doghands.com/wp-content/uploads/cf2ct-20021811-50x50.png 50w, https://www.doghands.com/wp-content/uploads/cf2ct-20021811-45x45.png 45w" sizes="auto, (max-width: 598px) 100vw, 598px" /></p>
<p>重複が削除されました。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021812.png" class="alignnone size-full wp-image-12655" alt="" width="307" height="193"></p>
<p>基本的な加工は一旦ここまでにして、「3.タクソノミーを一気に登録する。」に進みます。</p>
<h2>3.タクソノミーを一気に登録する。</h2>
<p>まずは移行対象となるタクソノミーをサイトに登録しておきます。<br />
例えば、カスタムフィールドの項目「Fruits」をタクソノミーに移動したい場合は「Fruits」や任意の名前でタクソノミーを作成します。<br />
「<a href="https://ja.wordpress.org/plugins/custom-post-type-ui/" rel="noopener noreferrer" target="_blank">Custom Post Type UI</a>」等のプラグインを利用しても良いでしょう。</p>
<p>このタクソノミーに個々の単語（ターム）を一括で登録する為、プラグインを利用してみます。</p>
<p>今回は「<a href="https://wordpress.org/plugins/wp-taxonomy-import/" rel="noopener noreferrer" target="_blank">WP Taxonomy Import</a>」を使います。<br />
※長らく更新されていない為、管理画面からのプラグイン検索結果には表示されず、ダウンロードしてインストールする必要があります。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021813.png" class="alignnone size-full wp-image-12656" alt="" width="700" height="369"></p>
<p>プラグインを有効可して、「設定」→「Taxonomy Import」から設定画面を開きます。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021814.png" class="alignnone size-full wp-image-12657" alt="" width="691" height="348"></p>
<p>プルダウンから登録しておいたタクソノミーを選択し、フォームにタームを記入していきます。<br />
タームの入力方法は下記の通りです。<br />
・デリミタで区切るとタームとスラッグを同時で登録可能（デフォルトのデリミタ: $ ）<br />
例:りんご$ringo<br />
・タームの親子関係は-&gt;で指定可能<br />
例<br />
Toyota-&gt;rav4<br />
Toyota-&gt;ch-r</p>
<h3>スラッグも登録しておく</h3>
<p>ということなので、先程作成した表にスラッグも追加してみます。<br />
コツは間に一列を追加し、セルにデリミタ（$）を入れておくことです。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021815.png" class="alignnone size-full wp-image-12658" alt="" width="302" height="191"></p>
<p>こうしておけば、表をコピーして<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021817.png" class="alignnone size-full wp-image-12660" alt="" width="384" height="184"></p>
<p>エディタ（ATOMやSublime Text、VS Code等何でも良いです）にペースト<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021816.png" class="alignnone size-full wp-image-12659" alt="" width="294" height="139"></p>
<p>余計な空白を置換して削除すれば、「Taxonomy Import」に使えるテキストが完成します。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021818.png" class="alignnone size-full wp-image-12661" alt="" width="245" height="140"><br />
※画像では一列目（fruits$スラッグ）までコピーしてしまっていますが、ここは必要ありません。</p>
<p>「Taxonomy Import」にテキストをペーストして、タクソノミーをインポートします。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021819.png" class="alignnone size-full wp-image-12662" alt="" width="383" height="303"></p>
<p>ここまでで、カスタムフィールドに登録されていた単語を特定のタクソノミーのタームとして登録することができました。</p>
<h2>4.タクソノミーと関連付けた投稿CSVをインポートして投稿を上書き</h2>
<p>後は投稿とタクソノミー（のターム）を紐付けて、既存の投稿を上書きします。</p>
<p>「1.カスタムフィールドを含んだ投稿をCSVでエクスポート」で作成し、スプレッドシートにアップした表を利用します。</p>
<p>投稿の一括登録（上書き）には、プラグイン「<a href="https://wordpress.org/plugins/really-simple-csv-importer/" rel="noopener noreferrer" target="_blank">Really Simple CSV Importer</a>」を利用してみます。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021820.png" class="alignnone size-full wp-image-12663" alt="" width="700" height="433"></p>
<p>このプラグインも長らく更新が無く、ダウンロードしてインストールが必要になります。</p>
<h3>「Really Simple CSV Importer」の基本的な使い方</h3>
<p>基本的な使い方は、<a href="http://notnil-creative.com/blog/archives/3465" rel="noopener noreferrer" target="_blank">プラグイン製作者様のこちらの記事</a>が一番わかり易いです。</p>
<p>CSVの各項目のタイトルをルールに沿ってリネームし、WordPress管理画面「ツール」→「インポート」→「CSV」からインポートを実行します。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021821.png" class="alignnone size-full wp-image-12664" alt="" width="546" height="93"></p>
<h3>「Really Simple CSV Importer」用に表を加工する</h3>
<p>今回は既存の記事に、新規設定したタクソノミーを登録するだけなので、表はシンプルです。<br />
必要なのは記事IDとタームのみです。後は、投稿タイプの指定も推奨されているので追加しておきます。</p>
<p>元の表。実際はTitleの列も必要ありません。<br />
エクスポートしたカスタムフィールドの項目名を、今回登録したタクソノミー名に変更します。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021822.png" class="alignnone size-full wp-image-12665" alt="" width="349" height="280"></p>
<p>「Really Simple CSV Importer」ではタクソノミーを登録する際、下記のルールがあります。<br />
・列名は「tax_タクソノミー名」。例えばfruitsならtax_fruits<br />
・タクソノミーとタームは登録済である必要がある※この為、「3.タクソノミーを一気に登録する。」の作業をしておく必要があります。</p>
<p>今回の作業で最低限必要なのは、このようなイメージの表です。※ポストタイプは必須ではありませんが、指定が推奨。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021823.png" class="alignnone size-full wp-image-12666" alt="" width="316" height="164"></p>
<h3>加工した表をCSVとしてローカルに保存</h3>
<p>表の加工が完了したら、「ファイル」→「ダウンロード」からCSV形式でローカルに保存します。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021824.png" class="alignnone size-full wp-image-12667" alt="" width="560" height="420"></p>
<p>WordPress管理画面からインポート画面（「ツール」→「インポート」→「CSV」）から先程のCSVを選択して、インポートを実行して完了です。</p>
<h2>5.カスタムフィールドの削除等の仕上げ</h2>
<p>後は、利用しないフィールドの削除、管理画面で該当するカスタムタクソノミーの表示、サイト側の表示コードの修正、等の仕上げを行います。</p>
<h3>カスタムフィールドのデータを削除「Delete Custom Fields」</h3>
<p>「Advanced Custom Field」から項目を削除しても、以前に入力し、記事に紐付けられているデータは残ったままなので、データベースから削除、またはプラグインを利用します。</p>
<p>これまた長らく更新されていないプラグインなので、下記ページからダウンロードしてインストールが必要です。<br />
利用時には念の為サイトのバックアップを取っておきましょう。<br />
<a href="https://ja.wordpress.org/plugins/delete-custom-fields/" rel="noopener noreferrer" target="_blank">Delete Custom Fields</a><img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021826.png" class="alignnone size-full wp-image-12669" alt="" width="700" height="354"></p>
<p>「ツール」→「Delete Custom Fields」から、データを削除するカスタムフィールドを選択し、実行します。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021827.png" class="alignnone size-full wp-image-12670" alt="" width="700" height="239"></p>
<p>記事に紐付けられていたカスタムフィールドのデータが削除されます。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/cf2ct-20021827.png" class="alignnone size-full wp-image-12670" alt="" width="700" height="239"></p>
<h2>最初の設計が肝心</h2>
<p>如何でしたでしょうか？<br />
ホームページの設計時に、カスタムフィールドとカスタムタクソノミーの特性を理解しておけば、このような作業は必要ありません。<br />
・後でまとめて表示したいかも<br />
・何回も使うかも<br />
と思うような項目は、カスタムタクソノミーの利用を考えましょう。</p>
<p>引き継いだサイトの中には、繰り返されるセミナーの開催地や、採用ページの勤務地がカスタムフィールドとして設計されているサイトもありました。<br />
つまり、管理画面から毎回毎回同じような住所を記入しなければならないのです。<br />
このような場合は、カスタムタクソノミーで地名を選択式にしておき、連動する要素（住所、アクセス、地図）を自動で出し分ける方が運用が楽でしょう。<br />
カスタムフィールドで選択式にしておく方法もあると思いますが、この場合「同じ会場で開催されているセミナー一覧」「同じ勤務地で募集している採用一覧」などの表示が面倒です。</p>
<p>これからサイトを作る場合は後々運用が面倒にならないように、慎重に設計しましょう。</p>
<p>投稿 <a href="https://www.doghands.com/convert_data_from_custom_field_to_custom_taxonomy/">カスタムフィールドで登録した情報をやっぱりカスタムタクソノミーに移行してみる</a> は <a href="https://www.doghands.com">studioDoghands</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">12639</post-id>	</item>
		<item>
		<title>管理画面の一覧にカスタムフィールドのデイトピッカーを表示すると更新時に問題発生(解決済)</title>
		<link>https://www.doghands.com/acf-datepicker-issue/</link>
		
		<dc:creator><![CDATA[hiro]]></dc:creator>
		<pubDate>Thu, 05 Sep 2019 04:15:22 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress全般]]></category>
		<category><![CDATA[WordPressプラグイン]]></category>
		<category><![CDATA[カスタムフィールド]]></category>
		<guid isPermaLink="false">https://www.doghands.com/?p=12267</guid>

					<description><![CDATA[<p><img width="450" height="191" src="https://www.doghands.com/wp-content/uploads/acf-19090516-450x191.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" /></p>
<p>特殊な例なので参考になる人は少ないと思いますがメモ。 管理画面のカスタム投稿タイプ一覧に「Advanced Custom Fields」プラグインで作成したカスタムフィールド（日付:デイトピッカー）を表示。 更にその日付</p>
<p>投稿 <a href="https://www.doghands.com/acf-datepicker-issue/">管理画面の一覧にカスタムフィールドのデイトピッカーを表示すると更新時に問題発生(解決済)</a> は <a href="https://www.doghands.com">studioDoghands</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<p><img width="450" height="191" src="https://www.doghands.com/wp-content/uploads/acf-19090516-450x191.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" /></p><p>特殊な例なので参考になる人は少ないと思いますがメモ。<br />
管理画面のカスタム投稿タイプ一覧に「Advanced Custom Fields」プラグインで作成したカスタムフィールド（日付:デイトピッカー）を表示。<br />
更にその日付順で並べる、という作業を行いました。<br />
問題無く反映されたと思いきや、サイト更新時に不具合が発生したので解決方法の記録です。</p>
<h2>カスタムフィールドの項目を管理画面のカスタム投稿タイプの一覧に表示</h2>
<p>※下記プロジェクトは簡易化したサンプルです。実際は複数のカスタムフィールドの列を追加しています。</p>
<p>カスタム投稿タイプ「イベント(event)」の一覧に、カスタムフィールド「年月日(event_date)」の列を表示する必要がありました。</p>
<p>まずは列を追加して<br />
[php]<br />
//『event』カスタム投稿にカスタムフィールド『event_date』の項目を追加<br />
function add_column_to_event ( $columns ) {<br />
	$columns[&#8216;event_date&#8217;] = &quot;年月日&quot;;<br />
	return $columns;<br />
}<br />
add_filter( &#8216;manage_event_posts_columns&#8217;, &#8216;add_column_to_event&#8217; );<br />
&lt;/code&gt;<br />
[/php]</p>
<p>追加した項目に値（日付データ）を入れます。<br />
[php]<br />
//追加したカスタムフィールドの項目に値を表示<br />
function add_column_value_to_event ($column, $post_id) {<br />
	switch ( $column ) {<br />
		case &#8216;event_date&#8217; :<br />
			echo get_post_meta( $post_id , &#8216;event_date&#8217; , true );<br />
			break;<br />
	}<br />
}<br />
add_filter( &#8216;manage_event_posts_custom_column&#8217;, &#8216;add_column_value_to_event&#8217;, 10, 2 );<br />
[/php]</p>
<p>そして、カスタムフィールドで追加した日付順（降順）で並べます。下のような感じのコードになります。<br />
[php]<br />
//カスタム投稿『event』一覧を、カスタムフィールド『event_date』の降順で並べ替え<br />
function set_post_types_admin_order_to_event ( $wp_query ) {<br />
	if (is_admin()) {<br />
		$post_type = $wp_query-&gt;query[&#8216;post_type&#8217;];<br />
		if ( $post_type == &#8216;event&#8217; ) {<br />
			$wp_query-&gt;set(&#8216;meta_key&#8217;, &#8216;event_date&#8217;);<br />
			$wp_query-&gt;set(&#8216;orderby&#8217;, &#8216;meta_value&#8217;);<br />
			$wp_query-&gt;set(&#8216;order&#8217;, &#8216;DSC&#8217;);<br />
		}<br />
	}<br />
}<br />
add_filter( &#8216;pre_get_posts&#8217;, &#8216;set_post_types_admin_order_to_event&#8217; );<br />
[/php]</p>
<p>問題無く表示されました。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19090517.png" alt="" width="700" height="292" class="alignnone size-full wp-image-12290" /></p>
<h2>更新すると問題発生。日付形式が強制的に上書きされる</h2>
<p>しかし、過去のデータを編集し、保存しなおしたところ問題が発生しました。</p>
<p>例えばカスタムフィールドで登録した日付「2018/09/01」の記事を修正、保存すると、日付は変更していないのにも関わらず、一覧では「20180901」と表示され、順番が狂ってしまうのです。</p>
<p>つまり、保存時に日付のフォーマットが強制的に書き換えられているということです。</p>
<h2>原因。プラグインのアップデートによる仕様変更によるもの</h2>
<p>そこで、Advanced Custom Fields公式ドキュメントの「Date Picker」を確認してみます。<br />
<a href="https://www.advancedcustomfields.com/resources/date-picker/" rel="noopener noreferrer" target="_blank">https://www.advancedcustomfields.com/resources/date-picker/</a><br />
冒頭から理由が記載されていました。<br />
要約すると次のような感じです。</p>
<blockquote><p>
ACF(アドバンスドカスタムフィールド)の以前のバージョンには「保存形式（Save Format）」という設定が含まれていました。<br />
この設定により、開発者はDBに保存されている形式を変更できました。<br />
保存形式の指定は便利ではありますが、多くの問題を引き起こす為、新バージョンでは削除されました。<br />
現在は「YYYYMMDD」を唯一の保存フォーマットとしています。<br />
<cite><a href="https://www.advancedcustomfields.com/resources/date-picker/
" target="_blank" rel="noopener noreferrer">公式サイトより一部意訳</a></cite>
</p></blockquote>
<p>つまり、データベースには「2018/09/01」のフォーマットで保存されていても、新バージョンでは「20180901」で保存されるということです。</p>
<h3>データベースをチェックしてみる</h3>
<p>念の為phpMyAdminでデータベースを確認してみます。<br />
カスタムフィールドのキーと値はpost_metaテーブルに入っています。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19090512.png" alt="" width="209" height="70" class="alignnone size-full wp-image-12283" /></p>
<p>該当のカスタムフィールドで検索してみます。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19090514.png" alt="" width="700" height="317" class="alignnone size-full wp-image-12285" /></p>
<p>有りました。更新済の記事のみ基本フォーマットで保存されています。一覧表示での順序の崩れの原因が確定しました。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19090513.png" alt="" width="690" height="375" class="alignnone size-full wp-image-12284" /></p>
<h3>旧バージョン（5以前）を確認</h3>
<p>試しに<a href="https://www.advancedcustomfields.com/downloads/" rel="noopener noreferrer" target="_blank">プラグインダウンロードページ</a>で、旧バージョンのACFをダウンロード、確認してみます。適当にバージョン4.3.8をインストールしてみます。</p>
<p>なるほど、「フォーマットを保存する」の項目があります。覚えていませんが、恐らく以前ここでフォーマットを指定していたと思われます。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19090501.png" alt="" width="700" height="452" class="alignnone size-full wp-image-12272" /></p>
<p>ちなみに最新バージョンは下記のような画面です。<br />
※「Translation preferences」はマルチ言語プラグイン「WPML」によるもので、今回は無関係です。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19090503.png" alt="" width="700" height="677" class="alignnone size-full wp-image-12274" srcset="https://www.doghands.com/wp-content/uploads/acf-19090503.png 700w, https://www.doghands.com/wp-content/uploads/acf-19090503-45x45.png 45w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<h2>修正する</h2>
<p>「じゃあ全部新しい形式にする為に記事を保存し直せばよいか」と言いたいところですが、このカスタム投稿タイプには1500程度の記事が登録されていました。<br />
元々、これらの記事はCSVから「<a href="http://notnil-creative.com/blog/archives/3465" rel="noopener noreferrer" target="_blank">Really Simple CSV Importer</a>」を使って一気に読み込んだものです。</p>
<p>CSVを確認したところ、確かに「2018/09/01」形式（Y/m/d）で日付を記入しています。ソフトはLibreOfficeを使っています。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19090505.png" alt="" width="389" height="314" class="alignnone size-full wp-image-12276" /></p>
<p>何らかの方法で記事をCSVに書き出し、日付を一気に修正、読み込み直す、という方法は記事IDの保持が面倒そうなので、データベースを書き換えることにしました。</p>
<h3>データベースで日付を置換</h3>
<p>phpMyAdminにログイン後、SQLタブを開きます。<br />
「wp_postmeta」というテーブルの「event_date」キーにあるデータから、「/」を取り除きたい。つまり「2018/09/01」を「20180901」にしたい、というSQLクエリは下のように書きます。<br />
[sql][/sql]update wp_postmeta set meta_value=REPLACE(`meta_value`,&#8217;/&#8217;,&#8221;) where meta_key = &#8216;event_date&#8217;;[sql][/sql]</p>
<p>無事に全て置換されました。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19090504.png" alt="" width="593" height="351" class="alignnone size-full wp-image-12275" /></p>
<p>管理画面でもカスタムフィールドで指定した日付の降順で並んでいます。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19090515.png" alt="" width="299" height="309" class="alignnone size-full wp-image-12287" /></p>
<h3>日付の表示を修正</h3>
<p>管理画面とはいえ、この日付フォーマットは少々味気ないのでY/m/d形式で表示することにします。</p>
<p>値を表示するコードを下記のように修正します。<br />
[php]<br />
//追加したカスタムフィールドの項目に値を表示。日付フォーマットも変更。<br />
function add_column_value_to_event ($column, $post_id) {<br />
	switch ( $column ) {<br />
		case &#8216;event_date&#8217; :<br />
			$date = get_post_meta( $post_id , &#8216;event_date&#8217; , true );<br />
			$date = new DateTime($date);<br />
			echo $date-&gt;format(&#8216;Y/m/d&#8217;);<br />
			break;<br />
	}<br />
}<br />
add_filter( &#8216;manage_event_posts_custom_column&#8217;, &#8216;add_column_value_to_event&#8217;, 10, 2 );<br />
[/php]</p>
<p>表示形式が修正されました。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19090506.png" alt="" width="127" height="495" class="alignnone size-full wp-image-12277" /></p>
<p>投稿 <a href="https://www.doghands.com/acf-datepicker-issue/">管理画面の一覧にカスタムフィールドのデイトピッカーを表示すると更新時に問題発生(解決済)</a> は <a href="https://www.doghands.com">studioDoghands</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">12267</post-id>	</item>
		<item>
		<title>Advanced Custom Fieldsの「Wysiwyg エディター」の出力で挿入されるpタグを除去する</title>
		<link>https://www.doghands.com/advanced-custom-fields%e3%81%ae%e3%80%8cwysiwyg-%e3%82%a8%e3%83%87%e3%82%a3%e3%82%bf%e3%83%bc%e3%80%8d%e3%81%ae%e5%87%ba%e5%8a%9b%e3%81%a7%e6%8c%bf%e5%85%a5%e3%81%95%e3%82%8c%e3%82%8bp%e3%82%bf/</link>
		
		<dc:creator><![CDATA[hiro]]></dc:creator>
		<pubDate>Thu, 21 Feb 2019 10:57:52 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ウェブ制作・運用]]></category>
		<category><![CDATA[カスタムフィールド]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress全般]]></category>
		<guid isPermaLink="false">https://www.doghands.com/?p=9565</guid>

					<description><![CDATA[<p><img width="450" height="191" src="https://www.doghands.com/wp-content/uploads/acf-19022109-450x191.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" /></p>
<p>カスタムフィールドを追加/管理する定番WordPressプラグイン「Advanced Custom Fields」。 テキストや画像、投稿オブジェクトなど、様々なフィールドが使えます。 その中で「Wysiwyg エディタ</p>
<p>投稿 <a href="https://www.doghands.com/advanced-custom-fields%e3%81%ae%e3%80%8cwysiwyg-%e3%82%a8%e3%83%87%e3%82%a3%e3%82%bf%e3%83%bc%e3%80%8d%e3%81%ae%e5%87%ba%e5%8a%9b%e3%81%a7%e6%8c%bf%e5%85%a5%e3%81%95%e3%82%8c%e3%82%8bp%e3%82%bf/">Advanced Custom Fieldsの「Wysiwyg エディター」の出力で挿入されるpタグを除去する</a> は <a href="https://www.doghands.com">studioDoghands</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<p><img width="450" height="191" src="https://www.doghands.com/wp-content/uploads/acf-19022109-450x191.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" /></p><p>カスタムフィールドを追加/管理する定番WordPressプラグイン「Advanced Custom Fields」。<br />
テキストや画像、投稿オブジェクトなど、様々なフィールドが使えます。<br />
その中で「Wysiwyg エディター」の利用時の注意点について解説します。<br />
<span id="more-9565"></span></p>
<h2>カスタムフィールドの登録</h2>
<p>このような感じでWysiwygエディターのフィールドを追加してみます。<br />
フィールドタイプは「Wysiwygエディター」を選択します。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19022103.png" alt="" width="700" height="393" class="alignnone size-full wp-image-9576"></p>
<p>投稿画面で適当にテキストを入力します。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19022104.png" alt="" width="700" height="453" class="alignnone size-full wp-image-9577"></p>
<h2>カスタムフィールドの表示</h2>
<p>投稿表示用のテンプレート（通常はsingle.php）の[code]&amp;lt;?php the_content(); ?&amp;gt;[/code]<br />
の下に、フィールド表示用のコードを追加します。<br />
pタグで囲み、太字・赤文字で出力してみます。<br />
[code]<br />
&amp;lt;?<br />
$wysiwyg = get_field( &#8216;wysiwyg_test&#8217; );//wysiwyg_testはフィールド名<br />
if ( $wysiwyg ) {<br />
echo &#8216;&amp;lt;p class=&quot;font-weight-bold text-danger&quot;&amp;gt;&#8217; . $wysiwyg . &#8216;&amp;lt;/p&amp;gt;&#8217;;//pタグで囲みクラスを追加<br />
}<br />
?&amp;gt;<br />
[/code]<br />
結果を確認します。<br />
テキストは表示されていますが、意図した装飾が反映されていません。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19022105.png" alt="" width="700" height="283" class="alignnone size-full wp-image-9578"></p>
<p>コードを確認すると、クラスを付与したpタグが閉じられ、新しくpタグが追加されてしまっています。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19022106.png" alt="" width="700" height="364" class="alignnone size-full wp-image-9579"></p>
<h2>意図しないpタグの原因</h2>
<p>カスタムフィールドを取得する関数「get_field」（表示はthe_field）には3つの引数があり、そのうちの1つが自動整形を担当し、デフォルトでは有効になっています。<br />
これが意図しないpタグのクローズと追加の原因です。</p>
<h3>「get_field」関数の引数</h3>
<p>[code]get_field($selector, [$post_id], [$format_value]);[/code]<br />
$selectorはフィールド名です。必須の引数です。<br />
$post_idは投稿IDです。デフォルトでは現在の記事を取得するので、空白またはfalseで問題ありません。<br />
投稿ID123の「text_field」を取得する場合は下記のように書きます。<br />
[code]$value = get_field( &quot;text_field&quot;, 123 );[/code]<br />
$format_valueがコードの整形に関する引数で、デフォルトではtrueになっています。これが整形の原因です。</p>
<p>参考:<a href="https://www.advancedcustomfields.com/resources/get_field/" rel="noopener" target="_blank">公式ドキュメント</a></p>
<p>それでは上記を踏まえ、引数の2番目と3番目を「false」にしてコードを修正してみます。<br />
[code]<br />
&amp;lt;?<br />
$wysiwyg = get_field( &#8216;wysiwyg_test&#8217;,false,false );//wysiwyg_testはフィールド名<br />
if ( $wysiwyg ) {<br />
echo &#8216;&amp;lt;p class=&quot;font-weight-bold text-danger&quot;&amp;gt;&#8217; . $wysiwyg . &#8216;&amp;lt;/p&amp;gt;&#8217;;//pタグで囲みクラスを追加<br />
}<br />
?&amp;gt;<br />
[/code]</p>
<p>結果を確認します。<br />
意図したとおり、クラスを付与したpタグで囲まれ、文字も装飾されました。<br />
しかし、整形機能をオフにしたことで、今度は改行が無視されてしまいました。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19022107.png" alt="" width="700" height="354" class="alignnone size-full wp-image-9580"></p>
<h2>改行を反映させる</h2>
<p>改行を反映させるには、PHPの関数「nl2br」を使います。<br />
参考:<a href="http://php.net/manual/ja/function.nl2br.php" rel="noopener" target="_blank">公式ドキュメント</a><br />
この関数は、テキストの改行文字(\r\n、 \n\r、\n および \r) の前に<br />
を付与して文字列を返します。<br />
基本的は使い方は下記の通りです。<br />
[code]echo nl2br(&#8216;改行入りの文字列&#8217;);[/code]</p>
<p>「nl2br」を利用してコードを修正してみます。<br />
[code]<br />
&amp;lt;?<br />
$wysiwyg = get_field( &#8216;wysiwyg_test&#8217;,false,false );//wysiwyg_testはフィールド名<br />
if ( $wysiwyg ) {<br />
echo nl2br(&#8216;&amp;lt;p class=&quot;font-weight-bold text-danger&quot;&amp;gt;&#8217; . $wysiwyg . &#8216;&amp;lt;/p&amp;gt;&#8217;) ;//pタグで囲みクラスを追加<br />
}<br />
?&amp;gt;<br />
[/code]</p>
<p>確認します。<br />
無事改行が反映されました。<br />
<img loading="lazy" decoding="async" src="https://www.doghands.com/wp-content/uploads/acf-19022108.png" alt="" width="700" height="452" class="alignnone size-full wp-image-9581"></p>
<p>投稿 <a href="https://www.doghands.com/advanced-custom-fields%e3%81%ae%e3%80%8cwysiwyg-%e3%82%a8%e3%83%87%e3%82%a3%e3%82%bf%e3%83%bc%e3%80%8d%e3%81%ae%e5%87%ba%e5%8a%9b%e3%81%a7%e6%8c%bf%e5%85%a5%e3%81%95%e3%82%8c%e3%82%8bp%e3%82%bf/">Advanced Custom Fieldsの「Wysiwyg エディター」の出力で挿入されるpタグを除去する</a> は <a href="https://www.doghands.com">studioDoghands</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">9565</post-id>	</item>
	</channel>
</rss>
