0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WordPressのテンプレート中でよく使う処理<随時更新>

Posted at

戸惑い、傷つき、誰にも打ち明けずに、悩んでた、それももう~~~~~やめ~よ~お~~♪

POSTループ(クエリを指定)

<?php
$args = array(
  'post_type' => 'post',
  'posts_per_page' => 3,
  'tax_query' => array(
    array(
      'taxonomy' => 'category',
      'field'    => 'slug',
      'terms'    => array( 'exam' ),
    ),
  ),
);
$query = new WP_Query( $args );
?>
<?php if( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
            <!-- データを取得 -->
<?php endwhile; ?>
<?php else : ?>
            <li><p>まだ記事がありません。</p></li>
<?php endif; ?>
<?php wp_reset_postdata(); //必須 ?>

備考

色々方法はあるらしいがWP_Query()が推奨されているらしいので。

参考:関数リファレンス/WP Query

POSTデータ

タイトル

<?php the_title(); ?>

備考

echo 書かなくて良い。
テンプレートタグ/the title

投稿日

<?php echo get_the_date('y.m.d'); ?>

備考

the_date()はecho 書かなくて良いが、同ー投稿日の記事が複数あると出力してくれない。
テンプレートタグ/the date
テンプレートタグ/get the date
PHP:date Manual

パーマリンク

<?php the_permalink(); ?>

備考

echo 書かなくて良い
テンプレートタグ/the permalink

アイキャッチ画像

URLとalt

<?php
if ( has_post_thumbnail() ) :
  $thumbid = get_post_thumbnail_id( $post->ID );
  $alt = get_post_meta($thumbid, '_wp_attachment_image_alt', true);
?> 
    <img src="<?php the_post_thumbnail_url( 'full' ); ?>" alt="<?php echo $alt ? $alt : get_the_title(); ?>">
<?php endif; ?>

URLのみ

<?php if ( has_post_thumbnail() ) : ?> 
    <img src="<?php the_post_thumbnail_url( 'full' ); ?>">
<?php endif; ?>

備考

画像は面倒。余計な属性がつくデフォルトではなく自力で。altが無い時の保険処理付き。

カスタムフィールド(テキスト)

slug が hogehoge なフィールドの値を表示。

<?php the_field('hogehoge'); ?>

フィールド名が hogehoge なフィールドの値を取得。

<?php $text = get_field('hogehoge'); ?>

備考

サニタイズとかした方がベターかも。不特定多数が投稿するようなサイトは作ったこと無いけど。

カスタムフィールド(ファイル)

※ フィールド名が hogehoge で、返り値が「ファイル URL」の場合

  <?php $file = get_field('hogehoge'); if( $file ) : ?>
        <a href="<?php echo $file['url'] ?>" target="_blank"">ファイルを開く</a>
  <?php endif; ?>

備考

PDFファイル添付したいケースでよく使う

個別記事ページ

前の記事へ/次の記事へリンク

※ 投稿

      <ul>
        <li><?php previous_post_link('%link', '前の記事へ'); ?></li>
        <li><a href="/news/">一覧に戻る</a></li>
        <li><?php next_post_link('%link', '次の記事へ'); ?></li>
      </ul>

※ カスタム投稿

      <ul>
        <li><?php previous_post_link('%link', '前の記事へ'); ?></li>
        <li><a href="<?php echo get_post_type_archive_link( get_post_type() ); ?>">一覧に戻る</a></li>
        <li><?php next_post_link('%link', '次の記事へ'); ?></li>
      </ul>

備考

/news/の部分、投稿のアーカイブページをTOPページ以外にしていると、関数でアーカイブページURLが取得出来ない問題有。
そのため、直指定。
うまいやり方ないかな。。

#共通

TOPページのURL

<?php echo esc_url( home_url('/') ); ?>

備考

長い。

子テーマのURL

<img src="<?php echo get_stylesheet_directory_uri() ?>/images/aternus.png" alt="" title="" width="" height="" />

備考

画像のパス取得等に使用。

カスタム投稿タイプデータ:記事に紐付くカスタムタクソノミーのターム一覧

コード

<?php
$terms = get_the_terms( $post->ID, 'taxonomy_name' );
if ( $terms ) :
  foreach ( $terms as $term ) :
?>
    <p class="cat-<?php echo $term->slug; ?>"><?php echo $term->name; ?></p>
<?php 
  endforeach;
endif;
?>

備考

タームが無い時の保険付。


あああ


備考

#終わりに
WordPressがブログソフトウェアだってこと、忘れ去られている気がする。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?