テーマのための関数(functions.php)

公開日:  

なかなかに豪華です!
というか、多すぎます!

少し迷う部分もあって・・・。

もう少し時間がかかりそう・・・。

<?php

//アイキャッチ・メニュー・RSS出力を有効化
add_theme_support('post-thumbnails');
add_theme_support('automatic-feed-links');

//エディタスタイル
add_theme_support('editor-style');
add_editor_style('editor-style.css');
function custom_editor_settings( $initArray ){
$initArray['body_class'] = 'editor-area';
return $initArray;
}
add_filter( 'tiny_mce_before_init', 'custom_editor_settings' );

//セルフピンバック禁止
function no_self_ping( &$links ) {
$home = home_url();
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, $home ) )
unset($links[$l]);
}
add_action( 'pre_ping', 'no_self_ping' );

//更新日の追加
function get_mtime($format) {
$mtime = get_the_modified_time('Ymd');
$ptime = get_the_time('Ymd');
if ($ptime > $mtime) {
return get_the_time($format);
} elseif ($ptime === $mtime) {
return null;
} else {
return get_the_modified_time($format);
}
}

//ヘッダー整理
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
remove_action( 'wp_head', 'wp_generator' ); 

//H2見出しを判別する正規表現を定数にする
define('H2_REG', '/<h2.*?>/i');//H2見出しのパターン

//本文中にH2見出しが最初に含まれている箇所を返す(含まれない場合はnullを返す)
//H3-H6しか使っていない場合は、h2部分を変更してください
function get_h2_included_in_body( $the_content ){
if ( preg_match( H2_REG, $the_content, $h2results )) {//H2見出しが本文中にあるかどうか
return $h2results[0];
}
}

function add_ads_before_1st_h2($the_content) {
if ( is_singular() ) {//固定ページも表示するのでis_single()から変更
ob_start();//バッファリング
get_template_part('ad-in-body');//広告貼り付け用に作成したテンプレート
$ad_template = ob_get_clean();
$h2result = get_h2_included_in_body( $the_content );//本文にH2タグが含まれていれば取得
if ( $h2result ) {//H2見出しが本文中にある場合のみ
//最初のH2の手前に広告を挿入(最初のH2を置換)
$count = 1;
$the_content = preg_replace(H2_REG, $ad_template.$h2result, $the_content, 1);
}
}
return $the_content;
}
add_filter('the_content','add_ads_before_1st_h2');

//記事内に特定のカテゴリの新着記事一覧を出力するショートコード
//order=DESCを、order=ASCに変えて昇順
function getCatItems($atts, $content = null) {
extract(shortcode_atts(array(
"num" => '5',
"cat" => ''
), $atts));
global $post;
$oldpost = $post;
$myposts = get_posts('numberposts='.$num.'&order=ASC&orderby=post_date&category='.$cat);
$retHtml='<ul>';
foreach($myposts as $post) :
setup_postdata($post);
$retHtml.='<li><a href="'.get_permalink().'">'.the_title("","",false).'</a></li>';
endforeach;
$retHtml.='</ul>';
$post = $oldpost;
return $retHtml;
}
add_shortcode("list", "getCatItems");

//記事内に特定のカテゴリの新着記事一覧をolで出力するショートコード
//order=DESCを、order=ASCに変えて昇順
function getCatItems_ol($atts, $content = null) {
extract(shortcode_atts(array(
"num" => '5',
"cat" => ''
), $atts));
global $post;
$oldpost = $post;
$myposts = get_posts('numberposts='.$num.'&order=ASC&orderby=post_date&category='.$cat);
$retHtml='<ol>';
foreach($myposts as $post) :
setup_postdata($post);
$retHtml.='<li><a href="'.get_permalink().'">'.the_title("","",false).'</a></li>';
endforeach;
$retHtml.='</ol>';
$post = $oldpost;
return $retHtml;
}
add_shortcode("list_ol", "getCatItems_ol");

// 投稿者アーカイブ非表示リダイレクト
function author_archive_redirect() {
if( is_author() ) {
wp_redirect( home_url());
exit;}
}
add_action( 'template_redirect', 'author_archive_redirect' );

?>

さあて、どうしたものか・・・。

スポンサーリンク

関連記事-こちらもどうぞ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です