functions.phpカスタマイズ

WordPress

クラシックエディタにする

// クラシックエディタ
add_filter( 'use_block_editor_for_post', '__return_false' );

ショートコード追加

テーマファイルへのリンク

functions.phpに以下の記述を追加

// ショートコード追加(テーマファイルへのリンク)
function shortcode_templateurl() {
  return get_stylesheet_directory_uri();
  //return get_template_directory_uri();
}
add_shortcode('tpl_url', 'shortcode_templateurl');

/テーマ/img/test.jpgの画像を表示したい場合
投稿ページ or 固定ページにショートコードを記載

<img src="[tpl_url]/img/test.jpg">

phpファイルを読み込み

functions.phpに以下の記述を追加

// ショートコード追加(php読み込み)
function sc_php($atts = array()) {
  shortcode_atts(array(   /* shortcode_atts でショートコードの属性名を指定 */
    'file' => 'default'   /* 属性名とデフォルトの値 */
  ), $atts);   /* 属性を格納する変数 */
  ob_start();   /* バッファリング */
  include(STYLESHEETPATH . "/$atts[file].php");  /* CSSのあるパス = 子テーマのパスを指定 */
  return ob_get_clean();  /* バッファの内容取得、出力バッファを削除 */
}
add_shortcode('sc', 'sc_php');

/テーマ/modules/banner.phpファイルを読み込む場合
投稿ページ or 固定ページにショートコードを記載

[sc file='modules/banner']

固定ページ読み込み

functions.phpに以下の記述を追加

// ショートコード追加(固定ページ読み込み)
function page_content_include($atts) {
	extract(shortcode_atts(array(
	  'slug' => 'default'
	), $atts, 'page_scode'));
  
	ob_start();
	$page_info = get_page_by_path( $slug );
	$page = get_post($page_info);
	ob_end_clean();
	return do_shortcode( $page->post_content );
  }
 add_shortcode('page_scode', 'page_content_include');

固定ページ「page_slug」を表示させる場合
投稿ページ or 固定ページにショートコードを記載

[page_scode slug='page_slug']

bodyにスラッグを用いたclassを追加する

// bodyにスラッグを用いたclassを追加する
add_filter( 'body_class', 'add_page_slug_class_name' );
function add_page_slug_class_name( $classes ) {
  if ( is_page() ) {
    $page = get_post( get_the_ID() );
    $classes[] = $page->post_name;
  }
  return $classes;
}

固定ページで自動タグ挿入を停止

// 固定ページで自動<p>タグ挿入を停止
add_filter('the_content', 'wpautop_filter', 9);
function wpautop_filter($content) {
	global $post;
	$remove_filter = false;
	$arr_types = array('page');
	$post_type = get_post_type( $post->ID );
	if (in_array($post_type, $arr_types)) $remove_filter = true;
	if ( $remove_filter ) {
		remove_filter('the_content', 'wpautop');
		remove_filter('the_excerpt', 'wpautop');
	}
	return $content;
}

まとめ

// クラシックエディタ
add_filter( 'use_block_editor_for_post', '__return_false' );


// ショートコード追加(テーマファイルへのリンク)
function shortcode_templateurl() {
  return get_stylesheet_directory_uri();
  //return get_template_directory_uri();
}
add_shortcode('tpl_url', 'shortcode_templateurl');


// ショートコード追加(php読み込み)
function sc_php($atts = array()) {
  shortcode_atts(array(   /* shortcode_atts でショートコードの属性名を指定 */
    'file' => 'default'   /* 属性名とデフォルトの値 */
  ), $atts);   /* 属性を格納する変数 */
  ob_start();   /* バッファリング */
  include(STYLESHEETPATH . "/$atts[file].php");  /* CSSのあるパス = 子テーマのパスを指定 */
  return ob_get_clean();  /* バッファの内容取得、出力バッファを削除 */
}
add_shortcode('sc', 'sc_php');


// ショートコード追加(固定ページ読み込み)
function page_content_include($atts) {
	extract(shortcode_atts(array(
	  'slug' => 'default'
	), $atts, 'page_scode'));
  
	ob_start();
	$page_info = get_page_by_path( $slug );
	$page = get_post($page_info);
	ob_end_clean();
	return do_shortcode( $page->post_content );
  }
 add_shortcode('page_scode', 'page_content_include');


// bodyにスラッグを用いたclassを追加する
add_filter( 'body_class', 'add_page_slug_class_name' );
function add_page_slug_class_name( $classes ) {
  if ( is_page() ) {
    $page = get_post( get_the_ID() );
    $classes[] = $page->post_name;
  }
  return $classes;
}


// 固定ページで自動<p>タグ挿入を停止
add_filter('the_content', 'wpautop_filter', 9);
function wpautop_filter($content) {
	global $post;
	$remove_filter = false;
	$arr_types = array('page');
	$post_type = get_post_type( $post->ID );
	if (in_array($post_type, $arr_types)) $remove_filter = true;
	if ( $remove_filter ) {
		remove_filter('the_content', 'wpautop');
		remove_filter('the_excerpt', 'wpautop');
	}
	return $content;
}