gooodmark

goodなWebサイトを厳選ブックマーク!デザインやディレクションの参考にどうぞ。

516bookmark

WordPressのfunction.phpで常用するコード⑨(その他編)

カスタム投稿:RSS設定

function.php
function custom_post_rss_set( $query ) {
	if ( is_feed() ) {
		$post_type = $query->get( 'post_type' );
		if ( empty( $post_type ) ) {
			$query->set( 'post_type', array('post', 'カスタム投稿01',	'カスタム投稿02',	'カスタム投稿03'));
		}
		return $query;
	}
}
add_filter( 'pre_get_posts', 'custom_post_rss_set' );

購読者はログイン後リダイレクト

function.php
add_action('wp_login', 'redirect_roll', 10, 2);
function redirect_roll($user_login, $user) {
	if( $user->roles[0] != 'subscriber'){	
			wp_redirect( '/wp/wp-admin/' );
			exit();
		} else {		
			wp_redirect( '/wp/' );
			exit();
		}
}

ア-カイブ:ページネーション

function.php
function pagenation($pages = '', $range = 4){
	$showitems = ($range * 2)+1;  
	global $paged;
	if(empty($paged)) $paged = 1;
	if($pages == '') {
		global $wp_query;
		$pages = $wp_query->max_num_pages;
		if(!$pages){
			$pages = 1;
		}} 
	if(1 != $pages) {
		echo "<ul class=\"pagination clearfix\">";
		if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<li><div><a href='".get_pagenum_link(1)."'>&laquo;</a></div></li>";
		if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>&lsaquo;</a>";	
		for ($i=1; $i <= $pages; $i++) {
			if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )){
				echo ($paged == $i)? "<li class=\"current\"><div>".$i."</div></li>":"<li><div><a href='".get_pagenum_link($i)."' class=\"inactive\">".$i."</a></div></li>";
		}}
	if ($paged < $pages && $showitems < $pages) echo "<li><div><a href=\"".get_pagenum_link($paged + 1)."\">&rsaquo;</a></div></li>";
	if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<li><div><a href='".get_pagenum_link($pages)."'>&raquo;</a></div></li>";
	echo "</ul>\n";
}}
表示用
<?php pagenation(); ?>

サイト内検索(検索対象:デフォルト投稿のみ)

function.php
function SearchFilter($query) {
	if ( !is_admin() && $query->is_main_query() && $query->is_search() ) {
		$query->set('post_type', 'post');
	}
	return $query;
}
add_filter('pre_get_posts','SearchFilter');