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


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

# POSTループ（クエリを指定）

```php
<?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](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query#.E3.81.B5.E3.81.A4.E3.81.86.E3.81.AE.E3.83.AB.E3.83.BC.E3.83.97)

# POSTデータ
## タイトル
```php
<?php the_title(); ?>
```
### 備考
echo 書かなくて良い。
[テンプレートタグ/the title](http://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_title)

## 投稿日
```php
<?php echo get_the_date('y.m.d'); ?>
```
### 備考
the_date()はecho 書かなくて良いが、同ー投稿日の記事が複数あると出力してくれない。
[テンプレートタグ/the date](https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_date)
[テンプレートタグ/get the date](https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_the_date)
[PHP:date Manual](http://jp2.php.net/manual/ja/function.date.php)


## パーマリンク

```php
<?php the_permalink(); ?>
```
### 備考
echo 書かなくて良い
[テンプレートタグ/the permalink](http://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_permalink)

## アイキャッチ画像

### URLとalt

```php
<?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
<?php if ( has_post_thumbnail() ) : ?> 
    <img src="<?php the_post_thumbnail_url( 'full' ); ?>">
<?php endif; ?>
```
### 備考
画像は面倒。余計な属性がつくデフォルトではなく自力で。altが無い時の保険処理付き。


## カスタムフィールド（テキスト）
### slug が hogehoge なフィールドの値を表示。

```php
<?php the_field('hogehoge'); ?>
```
### フィールド名が hogehoge なフィールドの値を取得。
```php
<?php $text = get_field('hogehoge'); ?>
```

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

## カスタムフィールド(ファイル)
※ フィールド名が hogehoge で、返り値が「ファイル URL」の場合

```php
  <?php $file = get_field('hogehoge'); if( $file ) : ?>
        <a href="<?php echo $file['url'] ?>" target="_blank"">ファイルを開く</a>
  <?php endif; ?>
```
### 備考
PDFファイル添付したいケースでよく使う

# 個別記事ページ
## 前の記事へ/次の記事へリンク
※ 投稿

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

```php
      <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
<?php echo esc_url( home_url('/') ); ?>
```
### 備考
長い。

## 子テーマのURL
```php
<img src="<?php echo get_stylesheet_directory_uri() ?>/images/aternus.png" alt="" title="" width="" height="" />
```
### 備考
画像のパス取得等に使用。


# カスタム投稿タイプデータ：記事に紐付くカスタムタクソノミーのターム一覧
## コード
```php
<?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;
?>
```
### 備考
タームが無い時の保険付。

----
## あああ
```php

```
### 備考



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