更新 2021/06/24
PHPをカスタマイズする
クライアント案件で記事投稿に本文以外に、別の欄を追加で入れたい時があります。
この場合は、single.phpに手を加えてカスタマイズする高度な作業を行います。
カスタムフィールドの表示・非表示切替設定で、特別な欄を作る方法。
ワードプレスサイトに新規のカスタムフィールドを作成し、投稿記事の表示/非表示を
切り替える方法です。テーマにないいろいろな欄を作成する事が可能です。
このページの一番下に表示させている画像は、投稿記事の一番下の位置に、single.phpに、
phpカスタマイズを行い表示できました。
- カスタムフィールドを新規に作成させるプラグインをインストールして稼動させる
- カスタムフィールドポストを管理するためのプラグインをインストールした
- カスタムフィールドが編集画面で確認できたら、投稿記事により必要な画像をアップする
- single.phpにカスタムフィールドを表示させるためのphpソースを貼り付ける
カスタムフィールドを作成するためのプラグインとは、Custom Post Type Permalinksです。
カスタムフィールドの管理プラグインとは、Custom Post Type UI です。
いずれもインストールして有効化すれば特に、デフォルトの設定のままでいいのですが、
カスタムフィールド>フィールドグループを編集 で、記述しているフィールド名を、
追加するphpソースの中のフィールド名と統一しておく必要があります。今回のフィールド名は、
「imgup」です。これが違っていると表示されません。
ソースを貼り付ける場所はどこ?
一番難解なのは、single.phpの書き換え、ソースの追加です。カスタムフィールドを表示
させるソースはこれです。
【AFTER】
<?php
//画像IDの取得
$attachment_id = get_field('imgup');
//echo "
<pre>";var_dump($attachment_id);echo "</pre>
";
//サイズの種類 thumbnail medium large full
$size = "large";
$image = wp_get_attachment_image_src( $attachment_id, $size );
//echo "
<pre>";var_dump($image);echo "</pre>
";
?>
<?php if( $image !== false ): ?>
<div class="imgbox">
<img src="<?php echo $image[0]; ?>" width="<?php echo $image[1]; ?>" height="<?php echo $image[2]; ?>" alt="<?php echo get_the_title(); ?>"></div>
<?php endif; ?>
single.phpの中のどこに貼り付けるかというのは、どの位置にカスタムフィールドを表示
させたいのか?表示させたい位置に貼り付けます。今回は、投稿postの中の一番下の位置に
貼り付けました。その部分のコードはこうなります。
【こちらがBEFORE】
<!--post start-->
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<div class="post_heading_wrapper">
<div class="postimage_container">
<div class="clear"></div>
</div>
<h1 class="post_title"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h1>
<ul class="post_meta">
<li class="day"><?php echo get_the_time('d') ?></li>
<li class="month"><?php echo get_the_time('M') ?></li>
<li class="year"><?php echo get_the_time('Y') ?></li>
<li class="posted_by"><span>by </span><?php the_author_posts_link(); ?></li>
<li><span> » <?php the_category(', '); ?></span></li>
<li class="post_comment"><?php comments_popup_link('No Comments.', '1 Comment.', '% Comments.'); ?></li>
</ul>
</div>
<div class="post_content">
<?php the_content(); ?>
<?php wp_link_pages(array('before' => '
<div class="clear"></div>
<div class="page-link"><span>' . __('Pages:', 'onepage') . '</span>', 'after' => '</div>
')); ?></div>
<div class="clear"></div>
</div>
<?php
//画像IDの取得
$attachment_id = get_field('imgup');
//echo "
<pre>";var_dump($attachment_id);echo "</pre>
";
//サイズの種類 thumbnail medium large full
$size = "large";
$image = wp_get_attachment_image_src( $attachment_id, $size );
//echo "
<pre>";var_dump($image);echo "</pre>
";
?>
<?php if( $image !== false ): ?>
<div class="imgbox">
<img src="<?php echo $image[0]; ?>" width="<?php echo $image[1]; ?>" height="<?php echo $image[2]; ?>" alt="<?php echo get_the_title(); ?>"></div>
<?php endif; ?>
<!--End Post-->
つまりループの中に貼り付けるとうまくいきました。






















PAGE TOP