wordpress キャスト管理・krc-cast-manager カスタム

WordPress

[スポンサーリンク]


wordpress でキャスト管理・出勤管理ができるプラグイン「krc-cast-manager」の設定方法を紹介します。

「krc-cast-manager」は、キャスト管理プラグインですが

カスタム次第では、エステや塾などでも使用可能なプラグインです。

機能は、女性のプロフィール登録・出勤管理・本日の出勤・週間の出勤表・ランキングなどがあります。

無料のキャスト管理プラグインでは、最も優秀なプラグインです。

公式サイトの質問と回答をよく読めば、中級者なら設置できると思いますが

初心者には難しそうなので、私なりに解説してみます。

krc-cast-manager 設置デモ

とりあえず、「krc-cast-manager」の設置デモが見当たらなかったので作ってみました。

在席キャスト管理システム「krc-cast-manager」の設置デモ

プラグインをダウンロード

GitHubからプラグインをダウンロードする。

ダウンロードファイル「krc-cast-manager-master.zip」

krc-cast-manager-master.zip
krc-cast-manager-master.zip

「krc-cast-manager-master.zip」解凍後

krc-cast-manager-master
krc-cast-manager-master

「krc-cast-manager」とフォルダ名を変更する。

URL「krc_cast」「krc_ranking」の変更

解凍したファイルのまま使用するとURLがキャストの場合「krc_cast」

ランキングでは「krc_ranking 」となり不自然なので

「krc_cast」を「cast」 に 「krc_ranking 」を「ranking 」に変更する。

※この作業は、URLを変更しない場合、行わない。

(URLを変更しない場合は、下記のファイルコードでは動作しないのでご了承ください。)

フォルダ内マルチ検索・マルチ変換の機能のあるエディタで

「krc_cast」を「cast」に「krc_ranking 」を「ranking 」に変更する。

スケジュールの時間の変更

krc-cast-schedule.js
krc-cast-schedule.js
krc-cast-schedule.js

plugins/krc-cast-manager/js/krc-cast-schedule.jsの変更

12行目からの

var time_popup = '<dd class="time_input"><div class="time_popup"><dl><dt><label for="遅早表記">遅早表記</label></dt><dd><select name="fastslow" class="fastslow"><option value="0">指定無</option><option value="早番">早番</option><option value="中番">中番</option><option value="遅番">遅番</option></select></dd></dl><dl><dt><label for="時間表記">時間表記</label></dt><dd><select name="starttime" class="starttime"><option value="0">指定無</option>';
time_popup += '<option value="OPEN">OPEN</option>';
for (var i = 10; i <= 26; i++) {
time_popup += '<option value="' + i + '時">' + i + '時</option>';
}
time_popup += '</select><br>から</dd><dd><select name="endtime" class="endtime"><option value="0">指定無</option>';
for (var i = 10; i <= 26; i++) {
time_popup += '<option value="' + i + '時">' + i + '時</option>';
}
time_popup += '<option value="LAST">LAST</option>';
time_popup += '</select></dd></dl></div></dd>';

を下記のように30分刻みに変更

var time_popup = '<dd class="time_input"><div class="time_popup"><dl><dt><label for="時間表記">時間表記</label></dt><dd><select name="starttime" class="starttime"><option value="0">指定無</option><option value="TEL確認">TEL確認</option>';
time_popup += '<option value="6:00">6:00</option><option value="6:30">6:30</option><option value="7:00">7:00</option><option value="7:30">7:30</option><option value="8:00">8:00</option><option value="8:30">8:30</option><option value="9:00">9:00</option><option value="9:30">9:30</option><option value="10:00">10:00</option><option value="10:30">10:30</option><option value="11:00">11:00</option><option value="11:30">11:30</option><option value="12:00">12:00</option><option value="12:30">12:30</option><option value="13:00">13:00</option><option value="13:30">13:30</option><option value="14:00">14:00</option><option value="14:30">14:30</option><option value="15:00">15:00</option><option value="15:30">15:30</option><option value="16:00">16:00</option><option value="16:30">16:30</option><option value="17:00">17:00</option><option value="17:30">17:30</option><option value="18:00">18:00</option><option value="18:30">18:30</option><option value="19:00">19:00</option><option value="19:30">19:30</option><option value="20:00">20:00</option><option value="20:30">20:30</option><option value="21:00">21:00</option><option value="21:30">21:30</option><option value="22:00">22:00</option><option value="22:30">22:30</option><option value="23:00">23:00</option><option value="23:30">23:30</option><option value="0:00">0:00</option><option value="0:30">0:30</option><option value="1:00">1:00</option><option value="1:30">1:30</option><option value="2:00">2:00</option><option value="2:30">2:30</option><option value="3:00">3:00</option><option value="3:30">3:30</option><option value="4:00">4:00</option><option value="4:30">4:30</option><option value="5:00">5:00</option><option value="5:30">5:30</option>';
time_popup += '</select><br>から</dd><dd><select name="endtime" class="endtime"><option value="0">指定無</option><option value="TEL確認">TEL確認</option>';
time_popup += '<option value="6:00">6:00</option><option value="6:30">6:30</option><option value="7:00">7:00</option><option value="7:30">7:30</option><option value="8:00">8:00</option><option value="8:30">8:30</option><option value="9:00">9:00</option><option value="9:30">9:30</option><option value="10:00">10:00</option><option value="10:30">10:30</option><option value="11:00">11:00</option><option value="11:30">11:30</option><option value="12:00">12:00</option><option value="12:30">12:30</option><option value="13:00">13:00</option><option value="13:30">13:30</option><option value="14:00">14:00</option><option value="14:30">14:30</option><option value="15:00">15:00</option><option value="15:30">15:30</option><option value="16:00">16:00</option><option value="16:30">16:30</option><option value="17:00">17:00</option><option value="17:30">17:30</option><option value="18:00">18:00</option><option value="18:30">18:30</option><option value="19:00">19:00</option><option value="19:30">19:30</option><option value="20:00">20:00</option><option value="20:30">20:30</option><option value="21:00">21:00</option><option value="21:30">21:30</option><option value="22:00">22:00</option><option value="22:30">22:30</option><option value="23:00">23:00</option><option value="23:30">23:30</option><option value="0:00">0:00</option><option value="0:30">0:30</option><option value="1:00">1:00</option><option value="1:30">1:30</option><option value="2:00">2:00</option><option value="2:30">2:30</option><option value="3:00">3:00</option><option value="3:30">3:30</option><option value="4:00">4:00</option><option value="4:30">4:30</option><option value="5:00">5:00</option><option value="5:30">5:30</option>';
time_popup += '</select></dd></dl></div></dd>';

プラグインのアップデート

krc-cast-manager
krc-cast-manager

プラグインフォルダ 「plugins」へアップロードする

wp-content/plugins/krc-cast-manager

プラグインの有効化

プラグインの有効化
プラグインの有効化

krc cast manager を有効化にする

キャストマネージャー
キャストマネージャー

有効化するとサイドバーに「キャストマネージャー」が現れる

これでプラグインの設置は完了だが、ここからが「krc-cast-manager」の面倒なところです。

キャストの登録やスケジュール管理はできるのだが、

表示させるには「テーマ」に「php ファイル」を追加しないといけません。

使用テーマ

wordpressのテーマ BusinessPress での説明となります。

デモサイトもBusinessPressを利用しております。

追加するファイル

1・archive-cast.php
2・content-castlist.php
3・content-cast.php
4・single-cast.php
5・archive-ranking.php
6・single-ranking.php
7・content-rankinglist.php
8・page-schedule.php
9・テーマフォルダに「images」フォルダを作成
10・テーマフォルダに「images」フォルダに「no.jpg」画像を追加

※no.jpgは、表示したい画像サイズで制作してください。

URL変更(一括変換)で、

「krc_cast」を「cast」に「krc_ranking 」を「ranking 」に変更した場合のファイルです。

※「krc_cast」「krc_ranking 」のままでは表示されません

キャスト一覧ページ

archive-cast.php
archive-cast.php

archive.phpをコピーして、archive-cast.php ファイルを作る

このような記載ならば問題なく表示されるはずです。

get_header(); ?>

<section id="primary" class="content-area">
	<main id="main" class="site-main">

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

		<header class="page-header">
			<?php
				the_archive_title( '<h1 class="page-title">', '</h1>' );
			//	the_archive_description( '<div class="taxonomy-description">', '</div>' );
			?>
		</header><!-- .page-header -->

<div class="cssgrid "><!-- float Grid-->
	
		<?php /* Start the Loop */ ?>
		<?php while ( have_posts() ) : the_post();
		get_template_part('content',('castlist'));
		endwhile; ?>

</div><!-- float Grid -->

		<?php
		the_posts_pagination( array(
			'prev_text' => esc_html__( '« Previous', 'businesspress' ),
			'next_text' => esc_html__( 'Next »', 'businesspress' ),
		) );
		?>

	<?php else : ?>

		<?php get_template_part( 'template-parts/content', 'none' ); ?>

	<?php endif; ?>

	</main><!-- #main -->
</section><!-- #primary -->

<?php if ( '3-column' !== get_theme_mod( 'businesspress_content_archive' ) ): ?>
	<?php get_sidebar(); ?>
<?php endif; ?>
<?php get_footer(); ?>

変更箇所

archive-cast.php
get_template_part( 'content', get_post_format() );

get_template_part('content',('castlist'));

に変更する

キャスト一覧ページ

content-castlist.php
content-castlist.php

content.phpをコピーして、content-castlist.php ファイルを作る

キャスト一覧で表示させる項目は、このファイルを編集する。

このような記載ならば問題なく表示されるはずです。

	<?php
	$cast_fields = get_post_custom(); //カスタムフィールドを取得
	$cast_screens = json_decode($cast_fields['_cast_screens'][0]); //画像配列
	$cast_type_terms = get_the_terms($post->ID, 'type'); //タイプ
	$cast_grade_terms = get_the_terms($post->ID, 'grade'); //グレード
	$cast_new_terms = get_the_terms($post->ID, 'krc_new'); //新人
	?>
		
<div class="cast-photo">
<a href="<?php the_permalink();?>">
<?php if( empty($cast_screens) ): ?>
<!-- キャスト画像をアップロードしていない場合、テーマフォルダに「images」フォルダから・「no.jpg」を表示する -->

<img src="<?php echo get_stylesheet_directory_uri();?>/images/no.jpg" class="trimming" loading="lazy" alt="<?php echo esc_html($cast_fields['_krc_name'][0]);?>">
<!-- 「images」フォルダ・「no.jpg」 は前もって作成する必要がある--> <!--wp-content/themes/○○/images/noimg.jpg--> 
<?php else: ?>
<img  src="<?php echo esc_url($cast_screens[0]);?>" class="trimming" loading="lazy"  alt="<?php echo esc_html($cast_fields['_krc_name'][0]);?>"><!-- キャスト画像 -->    
<?php endif;?>
</a>
		
<p class="cast-name"><?php echo esc_html($cast_fields['_krc_name'][0]);?></p>
<p class="cast-size"><?php echo esc_html($cast_fields['_krc_age'][0]);?>歳・T:<?php echo esc_html($cast_fields['_krc_tall'][0]);?></p>
<p class="cast-size">B:<?php echo esc_html($cast_fields['_krc_bust'][0]);?>(<?php echo esc_html($cast_fields['_krc_cups'][0]);?>) W:<?php echo esc_html($cast_fields['_krc_waist'][0]);?> H:<?php echo esc_html($cast_fields['_krc_hips'][0]);?></p>

<?php if( empty($cast_new_terms) ): ?><?php else: ?>
<p class="cast-new"><img src="<?php echo get_stylesheet_directory_uri();?>/images/new2.png" alt="新人"></p>
<?php endif;?>

<p class="cast-grade"><?php if( empty($cast_grade_terms) ): ?> <?php else: ?>
<a href="<?php echo esc_url( home_url( '/' ) ); ?>grade/<?php echo esc_html($cast_grade_terms[0]->slug); ?>"><img src="<?php echo get_stylesheet_directory_uri();?>/images/<?php echo esc_html($cast_grade_terms[0]->name);?>.png" alt="<?php echo esc_html($cast_grade_terms[0]->name);?>"></a><?php endif;?></p>

<!--タイプ <p class="cast-type"><?php if( empty($cast_type_terms) ): ?> <?php else: ?>
<?php echo esc_html($cast_type_terms[0]->name);?>
<?php endif;?></p> -->

<?php
date_default_timezone_set('Asia/Tokyo');
$today = getdate(); 
if($today['hours'] >= 0 and $today['hours'] < 5) {//0時〜5時以降の表示
$today = strtotime(date("Y-m-d", strtotime("+3 hour")));
echo '';
for ($i = 0; $i <= 0; $i++) {
	$y = date('D', strtotime('+'.$i.'-1 day', $today));
if ( date('Y-m-d', strtotime('+'.$i.'-1 day', $today)) == $day ) $y = 'target';
		echo '<p class="cast-time">';	
if ( $casttime = today_schedule($id, date('Y-m-d', strtotime('+'.$i.'-1 day', $today))) ) {
echo date('m/d ', strtotime('-1 day'));
if ($casttime['starttime'] !== '0') echo esc_html($casttime['starttime']);
	echo '-';
if ($casttime['endtime'] !== '0') echo esc_html($casttime['endtime']);
echo '';
	} 
	echo '</p>';
	}

}  else {
date_default_timezone_set('Asia/Tokyo');
	$today = strtotime(date("Y-m-d", strtotime("+3 hour"))); //5時以降の表示
echo '';
for ($i = 0; $i <= 0; $i++) {
	$y = date('D', strtotime('+'.$i.' day', $today));
if ( date('Y-m-d', strtotime('+'.$i.' day', $today)) == $day ) $y = 'target';
		echo '<p class="cast-time">';	
if ( $casttime = today_schedule($id, date('Y-m-d', strtotime('+'.$i.' day', $today))) ) {
echo date("m/d ");
if ($casttime['starttime'] !== '0') echo esc_html($casttime['starttime']);
	echo '-';
if ($casttime['endtime'] !== '0') echo esc_html($casttime['endtime']);
echo '';
	} 
	echo '</p>';
	}

}
?>

</div><!-- .cast-photo -->

注意点

キャスト画像をアップロードしない場合、予め用意した画像が表示されるようにしているので

テーマフォルダに「images」を作成して「no.jpg」は前もって作成する

キャスト詳細ページ

content-cast.php
content-cast.php

content.phpをコピーして、content-cast.php ファイルを作る

キャスト詳細で表示させる項目は、このファイルを編集する。

このような記載ならば問題なく表示されるはずです。

※一部・表記にプラグインAdvanced Custom Fields を利用しております

	<?php
	$cast_fields = get_post_custom(); //カスタムフィールドを取得
	$cast_screens = json_decode($cast_fields['_cast_screens'][0]); //画像配列
	$cast_type_terms = get_the_terms($post->ID, 'type'); //タイプ
	$cast_grade_terms = get_the_terms($post->ID, 'grade'); //グレード
	$cast_new_terms = get_the_terms($post->ID, 'krc_new'); //新人
	?>

	<?php
	if ( is_single() ) :
	the_title( '<h1 class="page-title">', '</h1>' );
	else :
	the_title( sprintf( '<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' );
	endif;
	?>
	<p class="taxonomy-description">
<?php echo esc_html($cast_fields['_krc_age'][0]);?>歳 T:<?php echo esc_html($cast_fields['_krc_tall'][0]);?> B:<?php echo esc_html($cast_fields['_krc_bust'][0]);?>(<?php echo esc_html($cast_fields['_krc_cups'][0]);?>) W:<?php echo esc_html($cast_fields['_krc_waist'][0]);?> H:<?php echo esc_html($cast_fields['_krc_hips'][0]);?>

<br /><?php
date_default_timezone_set('Asia/Tokyo');
$today = getdate(); 
if($today['hours'] >= 0 and $today['hours'] < 5) {//0時〜5時の表示
$today = strtotime(date("Y-m-d", strtotime("+3 hour")));
echo '';
for ($i = 0; $i <= 0; $i++) {
	$y = date('D', strtotime('+'.$i.'-1 day', $today));
if ( date('Y-m-d', strtotime('+'.$i.'-1 day', $today)) == $day ) $y = 'target';
		echo '';	
if ( $casttime = today_schedule($id, date('Y-m-d', strtotime('+'.$i.'-1 day', $today))) ) {
echo date('m/d ', strtotime('-1 day'));
if ($casttime['starttime'] !== '0') echo esc_html($casttime['starttime']);
	echo '-';
if ($casttime['endtime'] !== '0') echo esc_html($casttime['endtime']);
echo '';
	} 
	echo '';
	}

}  else {
date_default_timezone_set('Asia/Tokyo');
	$today = strtotime(date("Y-m-d", strtotime("+3 hour"))); //5時以降の表示
echo '';
for ($i = 0; $i <= 0; $i++) {
	$y = date('D', strtotime('+'.$i.' day', $today));
if ( date('Y-m-d', strtotime('+'.$i.' day', $today)) == $day ) $y = 'target';
		echo '';	
if ( $casttime = today_schedule($id, date('Y-m-d', strtotime('+'.$i.' day', $today))) ) {
echo date("m/d ");
if ($casttime['starttime'] !== '0') echo esc_html($casttime['starttime']);
	echo '-';
if ($casttime['endtime'] !== '0') echo esc_html($casttime['endtime']);
echo '';
	} 
	echo '<br>';
	}
}
?>

</p>
	
 <div class="cast-single">
	 <div class="flexbox">
		 	
<div class="photo"><!-- ■flickity-->
<div class="carousel" data-flickity='{ "imagesLoaded": true, "percentPosition": false ,"wrapAround": true, "pageDots": false}'>
<?php if( empty($cast_screens) ): ?>
<!-- キャスト画像をアップロードしていない場合、テーマフォルダに「images」フォルダから・「no.jpg」を表示する get_template_directory_uri-->      
 <img src="<?php echo get_stylesheet_directory_uri();?>/images/no.jpg" class="trimming"  alt="<?php the_title();?>">
<!-- 「images」フォルダ・「no.jpg」 は前もって作成する必要がある--> 
<?php else: ?>
<?php foreach ($cast_screens as $value):?>
<img src="<?php echo $value;?>"  class="trimming" loading="lazy"  alt="<?php the_title();?>"><!-- キャスト画像 --> 
<?php endforeach;?><?php endif;?>
</div>

<?php if( empty($cast_new_terms) ): ?><?php else: ?>
<p class="cast-new"><img src="<?php echo get_stylesheet_directory_uri();?>/images/new2.png" alt="新人"></p><!-- 新人 --> 
<?php endif;?>

<?php if( empty($cast_grade_terms) ): ?><?php else: ?>
<p style="text-align:center;"><a href="<?php echo esc_url( home_url( '/' ) ); ?>grade/<?php echo esc_html($cast_grade_terms[0]->slug); ?>"><img src="<?php echo get_stylesheet_directory_uri();?>/images/<?php echo esc_html($cast_grade_terms[0]->name);?>.png" alt="<?php echo esc_html($cast_grade_terms[0]->name);?>"></a></p>

<?php endif;?>	

<!-- タイプ --><?php if( empty($cast_type_terms) ): ?><?php else: ?><p class="cast-time"><a href="../../type/<?php echo esc_html($cast_type_terms[0]->slug); ?>"><?php echo esc_html($cast_type_terms[0]->name);?></a></p><?php endif;?><!-- タイプ -->

 </div><!-- ■flickity-->

<div class="interview"><!-- ■2-->
	
<h2 class="page-schedule">INTERVIEW</h2>	
	
 <div class="qa">
<dl>
<dt><?php the_field('q1'); ?></dt>
<dd><?php the_field('a1'); ?></dd>
<dt><?php the_field('q2'); ?></dt>
<dd><?php the_field('a2'); ?></dd>
<dt><?php the_field('q3'); ?></dt>
<dd><?php the_field('a3'); ?></dd>
<dt><?php the_field('q4'); ?></dt>
<dd><?php the_field('a4'); ?></dd>
<dt><?php the_field('q5'); ?></dt>
<dd><?php the_field('a5'); ?></dd>
</dl>
</div> 

</div><!-- ■2-->

<div class="comment"><!-- ■3-->
<h2 class="page-schedule">COMMENT</h2>
<?php the_content(); ?> 
</div><!-- ■3-->
  
<div class="gcomment"><!-- ■4-->
	  
<h2 class="page-schedule">GIRLS COMMENT</h2>
<?php the_field('gcomment'); ?>	  
	  
 </div><!-- ■4-->
 
<div class="schedule"><!-- ■5-->
	 
	 <h2 class="page-schedule">SCHEDULE</h2>

<?php singlecalendar(get_the_ID());?><!-- スケジュール-->	

<!--  新人<?php echo esc_html($cast_new_terms[0]->name);?>
グレード<?php echo esc_html($cast_grade_terms[0]->name);?>
タイプ<?php echo esc_html($cast_type_terms[0]->name);?>-->

</div><!-- ■5-->

</div><!-- ■flexbox-->
</div><!-- ■cast-single-->

<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>

キャスト詳細ページ

single-cast.php
single-cast.php

single.phpをコピーして、single-cast.php ファイルを作る

このような記載ならば問題なく表示されるはずです。

get_header(); ?>

<div id="primary" class="content-area">
	<main id="main" class="site-main">

	<?php while ( have_posts() ) : the_post(); ?>

	<?php get_template_part('content',('cast'));?>


	<?php endwhile; // End of the loop. ?>

	</main><!-- #main -->
</div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

ランキングページ

archive.phpをコピーして、archive-ranking.php ファイルを作る

このような記載ならば問題なく表示されるはずです。

get_header(); ?>

<section id="primary" class="content-area">
	<main id="main" class="site-main">
	<?php if ( have_posts() ) : ?>
		<header class="page-header">
			<?php
				the_archive_title( '<h1 class="page-title">', '</h1>' );
			//	the_archive_description( '<div class="taxonomy-description">', '</div>' );
			?>
		</header><!-- .page-header -->
		<?php /* Start the Loop */ ?>
	
	<?php while ( have_posts() ) : the_post();

		get_template_part( 'content', 'rankinglist' );
		endwhile ?>

		<?php
		the_posts_pagination( array(
			'prev_text' => esc_html__( '« Previous', 'businesspress' ),
			'next_text' => esc_html__( 'Next »', 'businesspress' ),
		) );
		?>

	<?php else : ?>

		<?php get_template_part( 'template-parts/content', 'none' ); ?>

	<?php endif; ?>

	</main><!-- #main -->
</section><!-- #primary -->

<?php if ( '3-column' !== get_theme_mod( 'businesspress_content_archive' ) ): ?>
	<?php get_sidebar(); ?>
<?php endif; ?>
<?php get_footer(); ?>

変更箇所

archive-ranking.php ファイル
get_template_part( ‘content’, get_post_format() );

get_template_part( 'content', 'rankinglist' );

に変更

ランキングページ

content-rankinglist.php
content-rankinglist.php

content.phpをコピーして、content-rankinglist.php ファイルを作る

このような記載ならば問題なく表示されるはずです。

<?php
$ranking_fields = get_post_custom();  //カスタムフィールドを取得
$ranking_cast_ids = json_decode($ranking_fields['_cast_rankings'][0]);  
$cast_grade_terms = get_the_terms($post->ID, 'grade'); //グレード
?>

<h2 class="entry-title"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h2>

<div class="cssgrid">
<?php   
$rank = 1;
foreach ($ranking_cast_ids as $cast_id) {$cast = get_post_custom($cast_id, '_krc_age', '_krc_tall' , '_krc_bust' , '_krc_cups', '_krc_waist', '_krc_hips', true );  echo '<div class="cast-photo"><a href="' . get_permalink($cast_id) .'" >';?>
	
<img src="<?php  $img_url = json_decode(get_post_meta($cast_id , '_cast_screens' ,true)); echo esc_url($img_url[0]); ?>" class="trimming"  alt="<?php    echo $cast ['_krc_name'][0];?> loading="lazy" " /></a>
	
<p class="cast-new"><img src="<?php echo get_stylesheet_directory_uri();?>/images/no<?= $rank ?>.png"></p>
	
<!--<div class="ran<?= $rank ?>" aria-hidden="true"><?= $rank ?>  </div>-->

<div class="cast-name"><?php    echo $cast ['_krc_name'][0];?></div>
 
<p class="cast-size"><?php	echo $cast ['_krc_age'][0];?>歳・T:<?php	echo $cast ['_krc_tall'][0];?> </p>
<p class="cast-size">B:<?php	echo $cast ['_krc_bust'][0];?>(<?php	echo $cast ['_krc_cups'][0];?>) W:<?php	echo $cast ['_krc_waist'][0];?>  H:<?php	echo $cast ['_krc_hips'][0];?></p>
	
</div>    

<?php
$rank++;
} ?>
</div>    

ランキングページ

single-ranking.php
single-ranking.php

single-ranking.php をつくる

get_header(); ?>

<div id="primary" class="content-area">
	<main id="main" class="site-main">

	<?php while ( have_posts() ) : the_post(); ?>

	<?php get_template_part('content',('rankinglist'));?>
	
	<?php endwhile; // End of the loop. ?>

	</main><!-- #main -->
</div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

スケジュールページ

page-schedule.php
page-schedule.php
get_header(); ?>

	<?php while (have_posts()):the_post();?>
	<?php remove_filter('the_content','wpautop');?>
	<?php the_content(__('<span class="meta-nav"></span>'));?>
	<?php wp_link_pages(array('before'=>'<div class="page-links">'.__('Page:'),'after'=>'</div>'));?>
	<?php endwhile;?>

<?php get_footer();?>

スケジュールページ

固定ページを作成

WordPresss管理画面【固定ページ→新規作成】で固定ページを作成。

本文に[scheduleshtml]というショートコードのみ記述

スラッグを「schedule」で公開

※Classic Editor プラグインを利用しております。

スケジュールを有効にする

functions.php
functions.php

スケジュールを表示

//スケジュール
function outschedule($day) { //DBから該当の日付のデータを取得
global $wpdb;
$table_name = $wpdb-&amp;amp;amp;gt;prefix . 'krc_schedules';
$schedules = $wpdb-&amp;amp;amp;gt;get_var(
$wpdb-&amp;amp;amp;gt;prepare("SELECT work FROM $table_name WHERE day = %s AND status = %d", $day, 0)
);
$works = unserialize($schedules);
return  $works;  //配列にして返す
}
 
function schedulesHtml() { //ショートコードの中身
$day = isset($_GET["works"]) ? $_GET['works'] : date("Y-m-d");
$works = outschedule($day);
$len = 6; //+1
 
$week = array("日", "月", "火", "水", "木", "金", "土");
$w = date('w', strtotime($day));
echo '&amp;amp;amp;lt;header class="sub_h_header"&amp;amp;amp;gt;';
echo '&amp;amp;amp;lt;h2 class="sub_h"&amp;amp;amp;gt;' . date('n/j', strtotime($day));
echo '(' . $week[$w] . ')';
echo 'の出勤スケジュール&amp;amp;amp;lt;/h2&amp;amp;amp;gt;&amp;amp;amp;lt;hr /&amp;amp;amp;gt;';
echo '&amp;amp;amp;lt;/header&amp;amp;amp;gt;';
 
echo '&amp;amp;amp;lt;nav class="krc_calendar clearfix"&amp;amp;amp;gt;&amp;amp;amp;lt;ul&amp;amp;amp;gt;';
for ($i = 0; $i &amp;amp;amp;lt;= $len; $i++) {
$yy = date('w', strtotime('+'.$i.' day'));
$y = date('D', strtotime('+'.$i.' day'));
if ( date('Y-m-d', strtotime('+'.$i.' day')) == $day ) $y = 'target';
echo '&amp;amp;amp;lt;li class="' . mb_strtolower($y) . '"&amp;amp;amp;gt;&amp;amp;amp;lt;a href="' . home_url( '/' )  . '/schedule/?works=' . date('Y-m-d', strtotime('+'.$i.' day')) . '"&amp;amp;amp;gt;' . strtoupper(date('n/j(' . $week[$yy] . ')', strtotime('+'.$i.' day'))) . '&amp;amp;amp;lt;/a&amp;amp;amp;gt;&amp;amp;amp;lt;/li&amp;amp;amp;gt;';
}
echo '&amp;amp;amp;lt;/ul&amp;amp;amp;gt;&amp;amp;amp;lt;/nav&amp;amp;amp;gt;';
 
if (!$works) {
//予定がない場合
echo '&amp;amp;amp;lt;br&amp;amp;amp;gt;';
} else if ( $works !='rest' ) {
echo '&amp;amp;amp;lt;div class="clearfix p70"&amp;amp;amp;gt;';
//postid順に配列に入っているのでs_order順にした配列を作る
$works_array = array();
foreach($works as $id =&amp;amp;amp;gt; $val){
$works_array[$val["s_order"]] = $id;
}
ksort($works_array);
foreach ($works_array as $rder =&amp;amp;amp;gt; $id) {
$args = array(
'post_type' =&amp;amp;amp;gt; 'cast',
'post__in' =&amp;amp;amp;gt; array($id),
);
query_posts($args);
while ( have_posts() ) : the_post();
set_query_var( 'work', $works[$id]);
//get_template_part('content',('castschedule'));//名前だけ表示
get_template_part( 'content', 'castlist' ); //content-castlist.phpは用意しておいて下さい。
endwhile;
wp_reset_query();
 
}
echo '&amp;amp;amp;lt;/div&amp;amp;amp;gt;';
} else {
//休み
echo '&amp;amp;amp;lt;br&amp;amp;amp;gt;';
}
}
add_shortcode('scheduleshtml', 'schedulesHtml'); //[scheduleshtml]というショートコードを作成

キャストの個人ページでスケジュールを表示

//キャストの個人ページでスケジュールを表示したい
function singlecalendar($id) {
$week = array("日", "月", "火", "水", "木", "金", "土");
$today = strtotime(date("Y-m-d", strtotime("+3 hour")));
echo '&amp;amp;amp;lt;div class="krc_calendar clearfix"&amp;amp;amp;gt;';
for ($i = 0; $i &amp;amp;amp;lt;= 6; $i++) {
$yy = date('w', strtotime('+'.$i.' day'));
$y = date('D', strtotime('+'.$i.' day', $today));
if ( date('Y-m-d', strtotime('+'.$i.' day', $today)) == $day ) $y = 'target';
echo '&amp;amp;amp;lt;dl&amp;amp;amp;gt;&amp;amp;amp;lt;dt class="' . mb_strtolower($y) . '"&amp;amp;amp;gt;' . strtoupper(date('n/j(' . $week[$yy] . ')', strtotime('+'.$i.' day', $today))) . '&amp;amp;amp;lt;/dt&amp;amp;amp;gt;';
if ( $casttime = today_schedule($id, date('Y-m-d', strtotime('+'.$i.' day', $today))) ) {
echo '&amp;amp;amp;lt;dd&amp;amp;amp;gt;';
if ($casttime['starttime'] !== '0') echo esc_html($casttime['starttime']);
echo '~';
if ($casttime['endtime'] !== '0') echo esc_html($casttime['endtime']);
echo '&amp;amp;amp;lt;/dd&amp;amp;amp;gt;&amp;amp;amp;lt;/dl&amp;amp;amp;gt;';
} else {
echo '&amp;amp;amp;lt;dd&amp;amp;amp;gt;-&amp;amp;amp;lt;/dd&amp;amp;amp;gt;&amp;amp;amp;lt;/dl&amp;amp;amp;gt;';
}
}
echo '&amp;amp;amp;lt;/div&amp;amp;amp;gt;';
}
function today_schedule($id, $day = '') { //本日の出勤確認
$day = $day != '' ? $day : date("Y-m-d",strtotime("+3 hour"));
$day = htmlentities($day, ENT_QUOTES, 'utf-8');
$works = outschedule($day);
if ($works &amp;amp;amp;amp;&amp;amp;amp;amp; $works !='rest' &amp;amp;amp;amp;&amp;amp;amp;amp; array_key_exists($id, $works) ) {
return $works[$id];
} else {
return false;
}
}
 

TOPページ等に本日の出勤キャストを表示

//TOPページ等に本日の出勤キャストを表示したい
function todaysCastHtml ($day = '') { //本日の出勤
$time9 =  - 6;//6時に次の日のスケジュールに切り替わる仕様
$day = $day != '' ? $day : date("Y-m-d",strtotime("+".$time9." hour"));
$works = outschedule($day);
addSchedules($works);
}
function addSchedules($works) {
$schedule = 'schedule';
 
if (!$works) {
//予定がない場合
echo '&amp;amp;amp;lt;br&amp;amp;amp;gt;';
} else if ( $works !='rest' ) {
$works_array = array();
foreach($works as $id =&amp;amp;amp;gt; $val){
$works_array[$val["s_order"]] = array(
'id'=&amp;amp;amp;gt; $id,
'time' =&amp;amp;amp;gt; $val
);
}
ksort($works_array);
foreach ($works_array as $id =&amp;amp;amp;gt; $work) {
$args = array(
'post_type' =&amp;amp;amp;gt; 'cast',
'post__in' =&amp;amp;amp;gt; array($work['id']),
'orderby' =&amp;amp;amp;gt; 'post__in'
);
//$test =
query_posts($args);
//printR($test);
while ( have_posts() ) : the_post();
set_query_var( 'schedule', $work['time'] );
get_template_part( 'content', 'castlist' ); //content-castlist.phpは用意しておいて下さい。
endwhile;
wp_reset_query();
}
} else {
//休み
echo '';
}
}

TOPページ等に新人キャスト表示

//新人キャスト表示
function outNewType () {
$args = array(
'post_type' =&amp;amp;amp;gt; 'cast',
'posts_per_page' =&amp;amp;amp;gt; -1,
'tax_query' =&amp;amp;amp;gt; array(
'relation' =&amp;amp;amp;gt; 'AND',
array(
'taxonomy' =&amp;amp;amp;gt; 'krc_new',
'field' =&amp;amp;amp;gt; 'slug',
'terms' =&amp;amp;amp;gt; "新人",
)
)
);
query_posts($args);
if ( have_posts() ) :
echo '&amp;amp;amp;lt;div class="clearfix"&amp;amp;amp;gt;';
while ( have_posts() ) : the_post();
get_template_part( 'content', 'castlist' ); //content-castlist.phpは用意しておいて下さい。
endwhile;
echo '&amp;amp;amp;lt;/div&amp;amp;amp;gt;';
endif;
wp_reset_query();
}

TOPページに本日の出勤キャストを表示する

page.php
page.php
<?php todaysCastHtml();?>

TOPページに新人キャスト表示する

<?php outNewType() ?>

最後に

基本的にコピペで動作すると思います。

キャストの画像の削除は、ダブルクリックで行います。

設置代行も行っております。



こちらの記事も読まれてます。