Smart Custom Fields

手軽にカスタムフィールドを導入できるプラグイン「Smart Custom Fields」の使い方など。

導入方法

プラグインの新規追加から「Smart Custom Fields」を検索するか、下記URLよりダウンロードします。
https://ja.wordpress.org/plugins/smart-custom-fields/

  • 「Smart Custom Fields > 新規追加」から、タイトルを入力。
    「フィールド追加」を選択します。
  • 「繰り返し」にチェックを入れると繰り返し機能が使えます。
    その際ボックス最下部の「サブフィールドを追加」から繰り返すカスタムフィールドを追加できます。
  • 「名前」欄にはカスタムフィールドを出力する際のキーを入力します。
    分かりやすい半角英数字の名前がよいかもめ。

簡単な動画投稿フォームの作成例

グループ名
「グループ名」=video
ひとつめ
「タイプ」=テキスト、「名前」=url
ふたつめ
「タイプ」=テキスト、「名前」=title
みっつめ
「タイプ」=テキストエリア、「名前」=description
<?php $repeat_group = SCF::get('video');
	foreach ( $repeat_group as $fields ) {
    	echo '<div class="video">';
		echo '<iframe width="320" height="240" src="' . $fields['url'] . '" frameborder="0"></iframe>';
		echo '<h2>' . $fields['title'] . '</h2>';
		echo '<div class="description">' . nl2br($fields['description']) . '</div>';
    	echo '</div>';
	}
?>

▲カスタムフィールドの内容を取得するコード。
6行目のnl2br()によりテキストエリアの改行を取得します。

作者様サイト→http://2inc.org/blog/2014/10/09/4426/

カスタムフィールドの住所からgooglemapへのリンクを生成

[map]のキーを持つフィールドに住所を入力し、その住所からGoogle mapへのリンクを生成します。

<?php 
  $address = post_custom('map');
  $address_encode = urlencode($address);
  $zoom = 14;
            
  $gmap = "http://maps.google.co.jp/maps?q=".$address_encode."&z=".$zoom;
?>
<a href="<?=$gmap;?>" target="_blank"><img src="<?php bloginfo('template_url'); ?>/images/estate/maps.jpg"></a>

rssにカスタムフィールドの値も入れたい!

要は出力されるRSSをカスタマイズしたい!
調べてみたけどサッパリわかりませんでした、勉強不足です!

先ずはfeedを出力させる側のwpにカスタマイズ

フォーラムの方ではどちらも解決されていたようですが頭の悪い僕にはサッパリでしたので
つまりテンプレートを用意すればいいんじゃね?と思い
http://wordpress.org/extend/plugins/feed-template-customize/
↑のプラグインをインストール
wp-include内のfeed-rss2.phpをテーマフォルダにコピー
コピーしたファイルをwpのカスタマイズ時と同じように変更
下記のようにphpファイルの中身はループ分のみ、というか表示させたい部分のみで構いません
カスタムフィールドも入れられるし、柔軟性高いね!

<table class="parent1">
  <tr>
    <th scope="col" class="child1">セミナー名・詳細</th>
    <th scope="col" class="child2">日 時</th>
    <th scope="col" class="child3">開 場</th>
    <th scope="col" class="child4">備 考</th>
  </tr>
  <?php
  $posts = get_posts('numberposts=0');
      global $post;
  ?>
  <?php if($posts): foreach($posts as $post): setup_postdata($post); ?>
  <tr>
    <td class="child1" id="post<?php the_ID(); ?>">
      <dl>
        <dt><?php the_title(); ?></dt>
        <dd><?php the_content(); ?></dd>
      </dl>
    </td>
    <td class="child2"><?php echo nl2br(post_custom('date')); ?></td>
    <td class="child3"><?php echo nl2br(post_custom('hall')); ?></td>
    <td class="child4"><?php echo nl2br(post_custom('remarks')); ?></td>
  </tr>
  <?php endforeach; endif;?>
</table>

あたりまえだけど文字コードはちゃんとUTF-8で保存しないと全力で文字化けします

フィードにアクセスしたらちゃんと表示されてるっ!

次に読み込み

別ドメインへのアクセスはjQueryではできないのでphpで
埋め込みたい場所に下記を記述

<?php
  $feed = file_get_contents("表示させたいページのURL");
  print $feed;
?>

今回は「表示させたいページのURL」はwpのfeedになるから
「http://ドメイン/wp/category/カテゴリー名/feed」とかになるよね!
ページをphpにて保存!もちろんutf-8で!

無事に表示されました

なんかfeedとかrssっぽくないけど・・・。

ちゃんと理解してfunction.phpなんかを編集できる人は本当にすごいな、と。
僕はまだまだ勉強不足だなーと実感しました。

参考にさせて頂いたフォーラムの記事

http://ja.forums.wordpress.org/topic/3563?replies=5
http://ja.forums.wordpress.org/topic/7957

使用させて頂いたプラグイン

Feed Template Customize

参考にさせて頂いたプラグイン実装方法

Feed Template Customize | dogmap.jp

Custom Field Gui 3

wordpressのカスタムフィールドはプラグインを利用して導入するのが楽です。
「かたつむりくんのWWW」より:

カスタムフィールドの改行

カスタムフィールドをテンプレートに適用する際に

<?php echo post_custom('キー')?>

上記のように記述する箇所を

<?php echo nl2br(post_custom('キー')); ?>

このように記述することで、改行も反映されます

Google Mapと併用

<?php $imagefield = get_imagefield('detail1image');
$attachment = get_attachment_object($imagefield['id']);
echo '<image src="' . $attachment['url'] . '" alt="' . $attachment['title'] . '" /><br />' . $attachment['content'] ;
?>

カスタムフィールドでアップロードした画像を表示し、その下にアップロード時に入力した画像の説明を表示

<a href="javascript:;" onclick="window.open('http://maps.google.co.jp/maps?q='+encodeURI('<?php echo post_custom('pref')?>'));return false;" target="_blank">地図はこちら</a>

カスタムフィールドキー「pref」に入力した住所からGoogle mapへのリンクを自動で生成