info

category : WordPress
[WordPress]記事を表示する最小処理  @ CMS , WordPress 2017年12月1日
記事を表示する最小処理
<?php
//各環境に合わせて修正
require( dirname( __FILE__ ) . '/../../wp-blog-header.php' );
//表示する件数
$per_page = 4;
query_posts(array('posts_per_page'=>$per_page,'post_status'=>'publish'));
?>
<?php if(have_posts()):while(have_posts()):the_post(); ?>
<div>
	<?php $custom_fields = get_post_custom();?>
	<p><?php the_time('Y/m/d');?></p>
	<a href="<?php the_permalink();?>"><?php the_title();?></a>
	<p><?php the_content();?></p>
</div>
<?php endwhile;endif;?>
[WordPress]カスタムフィールドのファイル  @ CMS , WordPress 2017年11月21日
カスタムフィールドのファイル
$cf = get_post_meta($post->ID);
$file_info = get_file_info_by_attachment_id($cf['cf_pdf'][0]);

/**
 * カスタムフィールドのファイル項目のIDからファイルの情報を返す
 * @param $attachment_id
 * @return string
 */
function get_file_info_by_attachment_id($attachment_id){
    $file_url = wp_get_attachment_url($attachment_id);
    $upload_dir = wp_upload_dir();
    $file_path = realpath($upload_dir['path'] . DIRECTORY_SEPARATOR . basename($file_url));
    $result = array(
        'url' => $file_url,
        'path' => $file_path,
        'realsize' => filesize($file_path),
    );
    return $result;
}
[WordPress]pagination  @ CMS , WordPress 2017年11月1日
pagination
テーマのfunctions.phpに入れておくとよい。
function echo_pagination($params = array()){ 
	$params = array_merge(
		array(
			'per_page'       => 6,
			'link_count'     => 9,
			'left'           => '<li><a href="%url%">◀</a></li>',
			'right'          => '<li><a href="%url%">▶</a></li>',
			'format'         => '<li><a href="%url%">%no%</a></li>',
			'current_format' => '<li class="active"><a href="%url%">%no%</a></li>',
		),
		$params
	);
	global $paged;
	global $wp_query;
	if(empty($paged)){
		$paged = 1;
	}
	$pages = $wp_query->max_num_pages;
	if(!$pages){
		return;
	}

	if(1 < $paged){
		echo preg_replace('/%url%/',get_pagenum_link($paged-1),$params['left']);
	}

	$startPageNo = max(1, $paged-floor($params['link_count']*0.5));
	if($pages-$params['link_count'] < $startPageNo){
		$startPageNo = $pages-$params['link_count']+1;
	}
	for($i=$startPageNo;$i<$startPageNo+$params['link_count'] && $i <= $pages;$i++){
		$html = preg_replace('/%url%/',get_pagenum_link($i),$params[($i==$paged)?'current_format':'format']);
		echo preg_replace('/%no%/', $i, $html);
	}

	if($paged < $pages){
		echo preg_replace('/%url%/',get_pagenum_link($paged+1),$params['right']);
	}
}
[WordPress]404自動リダイレクトOFF  @ CMS , WordPress 2017年10月22日
404自動リダイレクトOFF
/**
 * 下記の機能OFF
 * WordPressには本来存在しないURLを指定したとしても、WordPress側で推測してユーザーがアクセスしたかったであろうURLにリダイレクトする機能
 * @param $redirect_url
 * @return bool
 */
function disable_redirect_canonical($redirect_url) {
    if( is_404() ) {
        return false;
    }
    return $redirect_url;
}
add_filter('redirect_canonical','disable_redirect_canonical');
又は
remove_filter('template_redirect', 'redirect_canonical');
[WordPress]ルーティング  @ CMS , WordPress 2017年8月26日
テーマのfunctions.phpに追記する
/**
 * ルーティング(リライトルールの追加)
 * ここの設定を反映させるには下記の操作が必要
 * 管理画面にて「設定」->「パーマリンク設定」->変更せずに「変更を保存」
 * add_rewrite_ruleの第三引数の説明は下記
 * 'top' または 'bottom'。'top' の場合、ルールは WordPressのすべての既存ルールに優先する。'bottom' の場合、ルールはすべての既存ルールがマッチしない場合に検査される。
 */
function add_user_rewrite_rules() {
    add_rewrite_rule('^hoge/?$', 'index.php?c_controller=hoge&c_method=', 'top');
    add_rewrite_rule('^hoge/([^/]*)/?$', 'index.php?c_controller=hoge&c_method=$matches[1]', 'top');
}
add_action('init', 'add_user_rewrite_rules');

/**
 * ルーティング(リライトルールの追加)関連追加処理
 * c_type,c_actionをパブリッククエリ変数として登録
 * get_query_var('c_controller')で取得
 */
function add_user_routes_query_vars($query_vars){
    $query_vars[] = 'c_controller';
    $query_vars[] = 'c_method';
    return $query_vars;
}
add_filter('query_vars','add_user_routes_query_vars');
[IIS]WordPress用web.configサンプル  @ IIS , WordPress 2017年5月22日
WordPress用web.configサンプル
Apacheのhtaccessに当たるもの
<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<system.webServer>
		<rewrite>
			<rules>
				<rule name="Main Rule" stopProcessing="true">
					<match url="^(?!(images|uploads)).*$" />
					<conditions logicalGrouping="MatchAll">
						<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
						<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
					</conditions>
					<action type="Rewrite" url="index.php/{R:0}" />
				</rule>
			</rules>
		</rewrite>
	</system.webServer>
</configuration>
[WordPress]アップロードフォルダを変える  @ WordPress 2017年4月12日
アップロードフォルダを変える

/wp-admin/options.php へアクセス

/wp/にWordPressをインストールしており
/contents/uploadsにファイルをアップロードしたい場合
下記のように設定する。
upload_path
../contents/uploads

upload_url_path
http://yourdomain/contents/uploads

http://yourdomain/contents/でWordPressの内容を表示させている場合
http://yourdomain/.htaccess又はhttp://yourdomain/contents/.htaccessが存在するはず。
アップロードしたファイルが表示されない時は、rewrite ruleを修正して対応する。
[WordPress]ざっくりテンプレ  @ CMS , WordPress 2017年3月22日
ざっくりテンプレ

index.php
<!DOCTYPE html>
<html lang="ja">
<?php get_header('Meta'); ?>
<body>
<?php get_header('Top'); ?>

<div id="main" class="clearfix">
<?php get_sidebar('L'); ?>

<div id="content">
	<h2>
		<?php
			if( is_single() ){/* 個別記事 */
				the_title();
			}else if( is_page() ){/* 個別ページ */
				the_title();
			}else if( is_category() ){/* カテゴリーアーカイブ */
				echo 'category : ';
				echo get_cat_name( wp_specialchars($cat,1) );
			}else if( is_search() ){/* 検索結果 */
				echo 'search : ' . wp_specialchars($s, 1);
			}else if( is_archive() ){/* アーカイブ */
				echo 'archive : ' . wp_specialchars($m, 1);
			}else{
				echo 'Home';
			}
		?>
	</h2>

<?php if( is_page() ): ?>	

	<?php if(have_posts()):the_post(); ?>
			<?php if( get_post_status()!='private' && get_post_status()!='pending' ): ?>	
				<?php get_template_part("original-page-$page_id"); ?>
			<?php endif; ?>
	<?php endif; ?>

<?php else: ?>

	<?php if(have_posts()):while(have_posts()):the_post(); ?>
		<?php if( get_post_status()!='private' && get_post_status()!='pending' && !is_page() ): ?>	
			<article>
				<div class="article-inner link-dotted word-break">
					<div class="article-header">
						<a href="<?php the_permalink(); ?>">
							<strong><?php the_title(); ?></strong>
						</a>
						<small class="article-time"><?php the_time('Y年n月j日'); ?></small>
					</div>

					<div class="article-text">
						<?php
							the_content();
						?>
					</div>

					<div class="article-footer clearfix">
						<?php get_template_part('footer-article'); ?>
					</div><!--article-footer-->
				</div><!--article-inner-->
			</article>
		<?php endif; ?>
		<?php endwhile;?>
	<?php else: ?>
			<article>
				<div class="article-inner link-dotted word-break">
					<div class="article-header">
						<img class="article-image" src="<?php echo get_template_directory_uri().'/icon/icon-404.png' ?>"/>
						<strong>
							<?php if (!have_posts() ): ?>
								[Not Found]見つかりませんでした。
							<?php endif; ?>
						</strong>
						<small class="article-time"><?php echo date('Y年m月d日'); ?></small>
					</div>
					<div class="article-text">
						[Not Found]見つかりませんでした。
					</div>
					<div class="article-footer clearfix">
						
					</div><!--article-footer-->
				</div><!--article-inner-->
			</article>
	<?php endif; ?>

<?php endif; ?>

</div><!--content-->

<?php get_sidebar('R'); ?>

</div><!--main-->

<?php get_footer(); ?>

</body>
</html>

header-Meta.php
<head>
	<meta charset="UTF-8" />
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title></title>
	<meta name="author" content="ktyr report" /> 
	<meta name="copyright" content="ktyr report" />
	<meta name="keywords" content="">
	<meta name="description" content="">
	<link href="<?php echo get_stylesheet_directory_uri(); ?>/icon/favicon.ico?t=2" type="image/x-icon" rel="icon" />
	<link href="<?php echo get_stylesheet_directory_uri(); ?>/icon/favicon.ico?t=2" type="image/x-icon" rel="shortcut icon" />
	<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri(); ?>/common/css/common.css" media="screen" />
	<script type="text/javascript" src="<?php echo get_stylesheet_directory_uri().'/common/js/jquery-2.0.3.min.js'; ?>"></script>
</head>

header-Top.php
<header>
	<div class="header-inner">
		<div class="header-inner-inner">
			<h1 id="blog-name"><a href="<?=home_url()?>">wp template</a></h1>
		</div>
	</div>
</header>

sidebar-L.php
<div id="sidebarL">
	<section class="relative">
		<form class="mb-14" role="search" method="get" id="searchform" action="<?=home_url()?>" >
			<input type="search" class="" id="s" name="s" placeholder="Search">
			<span class="search-icon">
				<button type="submit">
					<span class="hidden">検索</span>
				</button>
			</span>
		</form>
	</section>
	<section>
		<select class="w-sidebarL" name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'> 
			<option value="">archives</option> 
			<?php wp_get_archives('type=monthly&format=option&show_post_count=1'); ?>
		</select>
	</section>
</div>

sidebar-R.php
<div id="sidebarR">
	<div class="roundbox">
	</div>
</div>

footer.php
<footer>
	<div class="footer-inner">powered by <a href="http://wordpress.org/" target="_blank">WordPress</a></div>
</footer>

footer-article.php
<input type="text" value="<?php the_permalink(); ?>" readonly>

original-page-2.php
オリジナルページ2