WEBLOG
WordPress > 標準設定
各template の出力を制御して各テーマファイルを自動変換。
全サイト共通設定により、functions.php に記載せず functions_init.php に記述しinclude。
include_once 'xxx/functions_init.php';
include_once 'xxx/functions_init.php';
以下、functions_init.php
/* 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内 画像 */
// 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 は、サイドメニューなどを生成する際に非常に便利ですが、タグが固定されています。
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 自動付与 */
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();
}
});