Mac gitを最新バージョンにする

MacデフォルトのGitを確認する

Gitは、Macにデフォルトでインストールされています。 バージョンの末尾に、(Apple Git-xxx)と付くのがMacにデフォルトで入っているGitとなります。

$ git --version
git version 2.30.1 (Apple Git-130)

gitのサイトで最新バージョンを確認すると2.36.1なので最新にアップデートします。 今回はHomebrew経由でインストールしたgitを使用します。

Homebrewとは

Homebrew(ホームブリュー)とは、Gitなどのパッケージのインストールやバージョンアップなどを行う、macOS用のパッケージ管理ツールです。

MacデフォルトのGitでもその機能に変わりはありませんが、バージョンを簡単に変更できないと言ったデメリットがあります。

そこで、「Gitのバージョン管理を楽にする」ことを目的として、Homebrewを使ったインストールを行います。

Homebrewで最新のgitをインストール

Homebrew自体はインストールしていましたが、Homebrewのgitはインストールしていないのでインストールします。

$ brew install git

PATHの設定が必要

インストールが終わった状態でgitのバージョンを確認するとまだMacのデフォルトのgitが表示されます。これをHomebrewのgitを使用するようにシェルにPATH設定をしないといけません。

シェルとは

シェルとは、ターミナルに打ち込んだコマンドを実行してくるプログラムです。このシェルに「HomebrewでインストールしたGitを使ってね」と教えてあげる必要があります。

シェルにHomebrew経由のGitパスを通す

使用しているシェルの確認

$ echo $SHELL
/bin/zsh

/bin/zshが出てきた場合はzsh(ゼットシェル)を利用しています。

.zshrc(ゼットシェル ラン コマンド)ファイルにGitのパスを記入

viコマンドで、.zshrcを開きます。

$ vi ~/.zshrc

開いたファイルをインサートモードにする『iキーを押す』下記のように画面が変わります

-- INSERT --

パスを記入する

# HomebrewのGitを使うパス
export PATH=/usr/local/bin/git:$PATH

インサートモードを終了する『esc(エスケープ)キーを押す』

変更を保存する『:wq』

変更を確認する(もう一度開く)

$ vi ~/.zshrc

何もせず終了する『:q』

シェルを再起動する

シェルは起動時にファイルのパスを見ますので、変更を反映する場合はターミナルを再起動する必要があります。

そのコマンドが下記になります。

$ exec $SHELL -l

参照しているGitを確認する

$ git --version
git version 2.36.1

成功していれば(Apple Git)が付かないバージョン情報が表示されます。

今回、めちゃくちゃ参考にさせていただきましたサイトです。

【MacOS】Homebrew経由でGitをインストールする方法 - 独学プログラマ

WP よく使うコードを関数にする

よく使うコードを関数にしておくと保守性が高まりますし、コードもスッキリします。

<?php if ( has_post_thumbnail() ): ?>
    <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a>
<?php else: ?>
    <a href="<?php the_permalink(); ?>"><img src="<?php echo get_template_directory_uri(); ?>/assets/img/common/noimage_600x400.png" alt=""></a>
<?php endif; ?>

これをfunctions.phpに関数にします。

/**
 * No Image画像を表示する関数
 */
function display_thumbnail() {
    if ( has_post_thumbnail() ) {
        echo '<a href="'.get_permalink().'">'.get_the_post_thumbnail( 'thumbnail' ).'</a>';
    }else {
        echo '<a href="'.get_permalink().'"><img src="'.get_template_directory_uri().'/images/common/noimage.png" height="180" width="180" alt=""></a>';
    }
}

使う時は関数名を記述

<?php display_thumbnail() ?>

ここで注意するのは、テンプレートでは『<?php the_post_thumbnail('thumbnail'); ?>』となっていたのを関数では『get_the_post_thumbnail( 'thumbnail' )』にしないといけません。

the_permalink(); → get_permalink() the_post_thumbnail('thumbnail') → get_the_post_thumbnail( 'thumbnail' )

Codexだと大抵、the*()は「~を表示する」、get_the*()は「~を取得する」と書いてあります。ループの中の現在地が「the」に対し『get』は引数でIDなどを指定することができます。

WP カテゴリーに画像を追加して、そのカテゴリー画像を表示させる

カスタムフィールドでカテゴリーに画像を追加

1.カテゴリーに追加するようにする

2.フィールドの詳細を入力

カテゴリー画像を取得・表示

<?php $categories = get_categories(); ?>

<?php foreach ($categories as $category) : ?>

<?php 
$cat_id = $category->cat_ID; // カテゴリのIDを取得
$post_id = 'category_'. $cat_id; // カテゴリIDを付けて、category_1 の様な形にする 
$cat_imgid = get_field('cat_img', $post_id); // cat_imgはフィールド名を入力 
$cat_img = wp_get_attachment_image_src($cat_imgid, 'full')[0];
$cat_slug = $category->slug; //カテゴリスラッグ
$cat_name = $category->name; //カテゴリ名前
$cat_description = $category->description; //カテゴリの説明文 
?> 

<a class="cat" href="<?= home_url(); ?>/?post_type=<?= $cat_slug ?>">
  <div class="cat_img">
    <img src="<?= $cat_img ?>" alt="">
  </div>
  <div class="cat_title">
    <?= $cat_name ?>
    <i class="fas fa-arrow-right"></i>
  </div>
  <p class="cat_description"><?= $cat_description ?></p>
</a><!--cat--> 

<?php endforeach; ?>  

スクロールすると途中で表示される「トップへ戻るボタン」

WP カスタム投稿含めたループ

<?php
$args = array('post_type' => array('wat', 'design_lab','post'), 'posts_per_page' => 5);
$news_posts = get_posts($args);

if ( !empty($news_posts) ): ?>
<ul>
<?php 
foreach ( $news_posts as $post ):
    setup_postdata($post); ?>

    <li><?php the_time('Y/m/d') ?></li>
    <li><a href="<?php the_permalink();?>"><?php the_title();?></a></li>

<?php endforeach;
wp_reset_postdata(); ?>
</ul>
<?php endif; ?>

WP カスタム投稿含めたループ

<?php
$args = array('post_type' => array('wat', 'design_lab','post'), 'posts_per_page' => 5);
$news_posts = get_posts($args);

if ( !empty($news_posts) ): ?>
<ul>
<?php 
foreach ( $news_posts as $post ):
    setup_postdata($post); ?>

    <li><?php the_time('Y/m/d') ?></li>
    <li><a href="<?php the_permalink();?>"><?php the_title();?></a></li>

<?php endforeach;
wp_reset_postdata(); ?>
</ul>
<?php endif; ?>