コマンドプロンプトで拡張子を一括リネームする

久々のTipsコーナー。
昨日ファイルの整理をしていたら一括で拡張子を変更したいなーってことがあったので、その方法をメモ代わりに残しておきます。ここでいう変更とはリネームであって、png→jpgのような変換では無いのであしからず。
ここではコマンドプロンプトを使います。PowerShell?…知らんな!(使い方を)

ではまずはコマンドプロンプトと、一括リネームを行いたいフォルダを開きます。
そしたらフォルダのパス(アドレス)をコピーして、コマンドプロンプトで以下のように入力して対象ディレクトリを変更します。

cd/d コピーしたパス

因みに私はおぼろげな知識でcdを使って移動しようとしてドライブをまたげずにアルェー?となりました。cd/dならドライブも変更できるので一発で移動できるはずです。

あとは拡張子のリネームを行います。
これも簡単で、例えば「.jpeg」を「.jpg」に変更したい場合は以下のように入力を行います。

ren *.jpeg *.jpg

見たら大体分かると思いますが「ren "変更前" "変更後"」という形です。*はワイルドカード。なんでもいいよ!のアレですね。
因みに私の環境だと「ren * *.jpg」で全てのファイルの拡張子を変更する結果となりました。

以上、付け焼き刃的Tipsでした。
たぶん調べたらいくらでも出てくる内容だと思いますが、書くネタもなかったし「理屈はいいからやり方だけ最短で教えてくれ!」という需要にマッチするかもしれないので残しておくことにしました。

GeneratePressテーマのカスタマイズ設定を取得する

2週間ぶりのGeneratePress記事でございます。
GeneratePressでは色や余白など様々なカスタマイズが出来る訳ですが、ここで設定した値をcssやphp側で使いたいケースがあります。「あそこで設定した色と同じものを使いたい!」というような状況ですね。
今回はこれらの値の取得方法について書いていこうと思います。

とはいえGeneratePressの設定項目は多岐にわたるので、どこにどんな設定項目があるのかは「generatepress/inc/defaults.php」にて確認をお願いします。こちらのファイルに各種設定の初期値が書いてありますので…(有料ライセンス、GP Premiumのファイルについては最後にまとめます)

それでは設定項目の値を取得する方法について。
まずはロゴ設定や文字色など、基本的な設定を取得するコードが以下になります。

$generate_settings = wp_parse_args(
	get_option('generate_settings', array()),
	generate_get_defaults());

$color = $generate_settings['link_color'];

1つ目の引数、get_optionで設定を配列で取得しています。
2つ目の引数、generate_get_defaultsで設定の初期値を同じく配列で取得しています。これは先ほど紹介したdefaults.phpで定義されている関数ですね。
最後にwp_parse_argsで結合します。あとは普通の配列と同じようにデータ名を指定して取り出すだけですね。

このような流れで、他の設定項目の値も取得することが出来ます。
ただし、get_optionの引数と初期値取得の関数が変わるので気を付けましょう。
以下は各設定の取得をまとめたものです。GP Premiumの機能についてはファイル箇所も併記しています。

// Colors
$color_settings = wp_parse_args(
	get_option('generate_settings', array()),
	generate_get_color_defaults());

// Typography
$font_settings = wp_parse_args(
	get_option('generate_settings', array()),
	generate_get_default_fonts());

// Padding
$spacing_settings = wp_parse_args(
	get_option('generate_spacing_settings', array()),
	generate_spacing_get_defaults());

// Blog (gp-premium/blog/functions/defaults.php)
$generate_blog_settings = wp_parse_args(
	get_option('generate_blog_settings', array()),
	generate_blog_get_defaults());

// Secondary Navigation (gp-premium/secondary-nav/functions/functions.php)
$generate_secondary_nav_settings = wp_parse_args(
	get_option('generate_secondary_nav_settings', array()),
	generate_secondary_nav_get_defaults());

// Sticky Navigation (gp-premium/menu-plus/functions/generate-menu-plus.php)
$generate_menu_plus_settings = wp_parse_args(
	get_option('generate_menu_plus_settings', array()),
	generate_menu_plus_get_defaults());

// Copyright
$copyright = get_theme_mod('generate_copyright');

コピーライトのように他と違う取得方法のものが混ざっているようなので、恐らく網羅できていないと思いますが…
ここに目当ての設定が見つからない場合は、GeneratePressとGP Premium全体をそれっぽいワードで検索すればいいと思います。そうすればいかにこの記事がソースコードから丸コピしてるか分かりますので…!

少々長くなりましたが今回はこれで以上となります。
次回はまたサイトに手を加えて書くことが出来た時にでも。それではまた。

GeneratePressでページ送りをカスタマイズする

GeneratePress記事4つ目でございます。
今回はタイトル通りページ送りのカスタマイズする方法です。
装飾についてお好みでCSSを設定して頂くとして、本記事ではページの表示数やテキストの変更方法を紹介します。

まず、ページ送りの表示項目数を変更するコードです。
これは実際には「1, 2, 3, 4, ... 7」の2~4の部分をいくつか表示するか、という設定です。
初期だと1で「1, 2, ... 7」と表示数が少ないので変更しておくといいかもしれません。

add_filter('generate_pagination_mid_size', function()
{
	return 4;
});

例によってフィルターが用意されているのでこれを利用します。
今回の場合だと「1, 2, 3, 4, 5, ... 7」という表示になります。お好みの数字でどうぞ。

次に、ページ送りの「戻る」や「進む」のテキストを変更するコードになります。

add_filter('generate_previous_link_text', function()
{
	return '<- Prev';
});
add_filter('generate_next_link_text', function()
{
	return 'Next ->';
});

こちらもフィルターを使います。お好きなテキストを入力してください。
因みに初期状態でも「← 前へ」「次へ →」と翻訳して表示されるので、変更必須という感じでは無いですね。

簡単なコード2つだけでちょっと物足りないですが、特にネタも無いので今回は以上となります。
次回はまた何かカスタマイズした時にでも。それではまた。

GeneratePressで検索結果を全文表示にする

GeneratePressのメモ書き3つ目。今回はタイトル通り検索結果の記事を全文表示にする方法です。
デフォルトでは設定に関わらず検索結果は抜粋表示になるようで、これを変更するカスタマイズ項目も現時点ではありません。
しかし、例によって公式がフィルターを用意してくれているのでこれを利用することで変更が可能です。

add_filter('generate_show_excerpt', function($show_excerpt)
{
	if (is_search())
	{
		return false;
	}
	return $show_excerpt;
});

以上、検索結果なら抜粋を止めるだけの簡単な処理になります。工夫すれば一部の記事だけを全文表示にしてレイアウトすることも出来ますね。公式にも使用例があるので参考にしてみるといいかもしれません。
公式ドキュメント → https://docs.generatepress.com/article/generate_show_excerpt/

ひとまず自分が行ったカスタマイズは全て書いたので、GeneratePress記事は今回で一段落です。
また何か手を加えた時には記事にしようと思います。それではまた。

GeneratePressでカテゴリなどの表示位置を変更する

今日も引き続きGeneratePressに関する記事になります。概要については前回記事参照ということで。
長くなりそうなので早速本題に移りますね。

GeneratePressではカテゴリやタグは記事の下に表示されます。
これを日付などと同じ箇所に表示させたいのですが、該当するカスタマイズ項目が無いのでコードを追加します。
といっても前回同様、GeneratePress側でフィルターが予め用意されているのでコードは単純です。

add_filter('generate_header_entry_meta_items', function() 
{
	return array('date', 'categories', 'tags', 'author');
});
add_filter('generate_footer_entry_meta_items', function()
{
	return array('comments-link');
});

それぞれの記事情報(entry-meta)に表示したい要素を配列で返すだけOKです。順番も反映されます。
上記のコードでは記事のヘッダーに日付、カテゴリ、タグ、投稿者が表示され、フッターにコメントへのリンクが表示される形になります。この辺はお好みでどうぞ。

で、これで終わりかと思いきや、カテゴリやタグをヘッダー側に表示すると対応するアイコンが表示されなくなります。
意図は分かりませんが、ヘッダー側ではアイコンを表示しないようcssで設定されているようです。
アイコンを表示したい場合は以下のcssを追加します。

.entry-header .cat-links::before, .entry-header .tags-links::before, .entry-header .comments-link::before
{
	display: inline-block;
}

これでアイコンも表示されるようになりました。
後は追加で余白などを設定して見た目を整えれば完成…ではなく。

GeneratePressではentry-metaに表示する情報が無い場合、entry-metaそのものをcssで非表示にしています。
しかしこれらは常にデフォルトの状態を想定しており、上記カスタマイズの内容は反映してくれません。
設定によっては空のentry-metaが表示されて余分な余白が発生してしまうため、きちんと非表示になるようコードを追加しておきます。

add_action('init', function()
{
	$settings = wp_parse_args(
		get_option('generate_blog_settings', array()),
		generate_blog_get_defaults());
	
	if (!is_singular() && !$settings['comments'])
	{
		$css .= '.blog footer.entry-meta, .archive footer.entry-meta {display: none;}';
	}
	if (is_singular() && !$settings['single_post_navigation'])
	{
		$css .= '.single footer.entry-meta {display: none;}';
	}
	
	add_action('wp_head', function() use($css)
	{
		echo("<style>$css</style>");
	});
});

上記コードはGeneratePressの有料ライセンスのファイル(gp-premium\blog\functions\generate-blog.php)を参考に書きました。見様見真似の怪しいコードですが…
$settings = ... の部分でカスタマイズ設定を取得してentry-metaの表示を制御しています。
例えばカテゴリなら$settings['categories']、個別ページでは$settings['single_categories']で表示設定を取得できます。

今回はコメントやページ送りの表示設定に応じてentry-metaが非表示になる、という動作です。
本来ならヘッダー側も処理を書くべきですが、当ブログでは日付を常時表示しているのと、あと疲れたので妥協しました。

という訳で長くなりましたが、以上で完了となります。
カテゴリなどの位置変更はフィルターが用意されていたので、後半のentry-meta非表示についてもそのうち公式で対応してくれるようになるかもしれませんね。そうなるといいな!