TECHBLOG

WordPress > 標準設定

WordPressテンプレート初期設定

Create:

Update:

Category:WordPress標準設定

Series:WordPress初期設定

[ Version.19 ]

概要

各template の出力を制御して各テーマファイルを自動変換。

全サイト共通設定により、functions.php に記載せず functions_init.php に記述しinclude。

functions.php
include_once 'xxx/functions_init.php';

以下、functions_init.php

下書き投稿(private post)の表示制御

/* private post 下書きの表示 */
add_filter('pre_get_posts', function () {
	global $wp_query;
	if ($wp_query->is_admin || (defined('REMOVE_PRIVATE_POSTS') && !REMOVE_PRIVATE_POSTS)) {
		return;
	}
	if (is_post_type_archive()) {
		$wp_query->query_vars['post_status'] = 'publish'; // 投稿ステータス「公開済」
	}
});

content 内の画像

/* content内 画像 */
// srcset解除
add_filter('wp_calculate_image_srcset', '__return_false');
// content内画像 : 不要属性削除 *現在acfエディタ内の画像には無効
function wp_init_oo_remove_image_attribute($html)
{
	$html = preg_replace('/(width|height)="\d*"\s/', '', $html);
	$html = preg_replace('/class=[\'"]([^\'"]+)[\'"]/i', '', $html);
	$html = preg_replace('/title=[\'"]([^\'"]+)[\'"]/i', '', $html);
	$html = preg_replace('/<a href=".+">/', '', $html);
	$html = preg_replace('/<\/a>/', '', $html);
	return $html;
}
add_filter('image_send_to_editor', 'wp_init_oo_remove_image_attribute', 10);
add_filter('post_thumbnail_html', 'wp_init_oo_remove_image_attribute', 10);

get_archives_link の返り値変

get_archives_link は、サイドメニューなどを生成する際に非常に便利ですが、タグが固定されています。

aタグ内にspanタグが自動で入るようにカスタマイズしています。

/* get_archives_link の返り値変更 */
add_filter('get_archives_link', function ($link_html, $url, $text, $format, $before, $after) {
	global $before_text, $after_text;
	$before_text = $before_text ?? '';
	$after_text = $after_text ?? '';
	$link_html = preg_replace('@(<a.+>)(.+?)</a>(.+?)</li>@', '\1\2\3</a></li>', $link_html);
	if ($format === 'oldoffice_custom') {
		$link_html = $before . '<a href="' . $url . '"><span>' . $before_text . $text . $after_text . '</span></a>' . $after . "\n";
	}
	return $link_html;
}, 10, 6);

ディレクトリパス(PUBLICDIR) 自動付与

PUBLICDIR は独自の定数で、公開ディレクトリがドメイン直下でない場合に割り当てています。

公開時には ” (空の値)となりますが、この定数は残しています。

/* PUBLICDIR 自動付与 */
function wp_init_oo_output_callback($buffer)
{
	if (defined('PUBLICDIR') && !empty(PUBLICDIR)) {
		$buffer = preg_replace('/(<img .*src=")(' . '\\' . PUBLICDIR . ')*\//', '$1' . PUBLICDIR . '/', $buffer);
		$buffer = preg_replace('/(<form .*action=")(' . '\\' . PUBLICDIR . ')*\//', '$1' . PUBLICDIR . '/', $buffer);
		$buffer = preg_replace('/(<a .*href=")(' . '\\' . PUBLICDIR . ')*\//', '$1' . PUBLICDIR . '/', $buffer);
	}
	return $buffer;
}
add_action('after_setup_theme', function () {
	ob_start('wp_init_oo_output_callback');
});
add_action('shutdown', function () {
	if (ob_get_length()) {
		ob_end_flush();
	}
});
loading