datepicker 2023年版(特定の日付を指定可能)

Filed under: JavaScript — kdcs @ 2023年8月6日 日曜日

過去のdatepicker設定では曜日指定だけで、特定の日付が設定できなかったが、今回のコードは設定が可能になる。

    $(function() {

    // 休日を指定(複数可能)
        var holidays = [
        '2023/08/15',
        '2020/02/12',
        ];

        $('#calendar').datepicker({
        minDate: '1d', //明日から
        maxDate: '+2m', //1ヶ月後までが選択可能範囲
        dateFormat: 'yy年mm月dd日(D)', //年-月-日(曜日)

                beforeShowDay: function(date) {
                  var result;
                  var ymd = date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate();
                  var HName = ktHolidayName(ymd);

                  //祝日のセット
                  if(HName != '') {
                      result =  [true, 'date-holiday', HName]; //trueで、祝日の日付選択可能
                  } else {

                    // 休日のセット
                    for (var i = 0; i < holidays.length; i++) {
                        var htime = Date.parse(holidays[i]); //timeへ変換
                        var holiday = new Date();
                        holiday.setTime(htime);

                        // 休日
                        if (holiday.getYear() == date.getYear() &&
                            holiday.getMonth() == date.getMonth() &&
                            holiday.getDate() == date.getDate()) {
                            return [false, 'holiday']; //falseで「休日を格納」で追加した日の日付選択不可
                        }
                    }

                    switch (date.getDay()) {//各曜日のセット
                                case 0: //日曜日
                                    result = [false, 'sunday']; //falseで日曜日の日付選択不可
                                    break;
                                case 6: //土曜日
                                    result = [false, 'saturday']; //falseで土曜日の日付選択不可
                                    break;
                                default:
                                    result = [true];
                                    break;
                    }
                }
                return result;
            },
            onSelect: function(dateText, inst) {
                $('#calendar').val(dateText);
            }

        });
  $(function() {
    $("#calendar").datepicker();
    $("#calendar").datepicker("option", "showOn", 'button');
    $("#calendar").datepicker("option", "buttonImageOnly", true);
    $("#calendar").datepicker("option", "buttonText", 'カレンダーから選択');
    $("#calendar").datepicker("option", "buttonImage", 'https://megane-fujita.com/wp-content/themes/fujita2021/images/ico_calendar.png');
  });

テキストを1文字ずつ順番に表示させる(採用版)

Filed under: css,JavaScript — kdcs @ 2023年7月4日 火曜日

slickスライダーを使いつつ、タイトルやキャッチコピーなどのテキストを1文字ずつ表示させる方法。

slickスライダーを使う場合、フェードで切り替わるので「.slick-active」のクラスが付加されたときにcssでアニメーションさせなければならない。

例はキャッチコピーとメインタイトルを2行で表示し、文字サイズも変える
文字数は8文字まで対応(cssの記述で増減可能)

html

<div id="slickSlider">
<div class="slick-box">
<div id="slider-1" class="slider-item">
<img class="slickImage1" src="<?php echo get_template_directory_uri(); ?>/images/slick/slick_img01.jpg" alt="画像2" title="" width="1600" height="665">
<div class="catchPosition inner">
<div class="catchText1">きゃっちこぴー1</div>
<div class="catchText2">めいんたいとる1</div>
</div><!--/.catchPosition-->
</div><!--/#slider-1-->
<div id="slider-2" class="slider-item">
<img class="slickImage2" src="<?php echo get_template_directory_uri(); ?>/images/slick/slick_img02.jpg" alt="画像2" title="" width="1600" height="665">
<div class="catchPosition inner">
<div class="catchText1">きゃっちこぴー2</div>
<div class="catchText2">めいんたいとる2</div></div><!--/.caption-->
</div><!--/#slider-2-->
</div><!--/.slick-box-->
<div class="slickslider-filters"></div>
</div><!--/#slickSlider-->

css

.slick-box .catchPosition {
    display: none;
}
.slick-box .slick-active .catchPosition {
    display: block;
}
.slick-box .catchPosition {
	width: 100%;
	margin: auto;
    color: #fff;
	text-align: center;
	position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    z-index: 200;
}
.slick-box .catchText2 {
    font-family: "游明朝", YuMincho, "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN", "MS P明朝", "MS 明朝", serif;
    font-size: 48px;
}
.slick-box .catchText1 {
    font-family: "游明朝", YuMincho, "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN", "MS P明朝", "MS 明朝", serif;
    font-size: 36px;
}

.slick-box .catchText1 span{ opacity: 0; }
.slick-box .catchText2 span{ opacity: 0; }

.slick-box .slick-active .catchText1 span{ opacity: 0; animation:text_anime_on 1s ease-out forwards; }
.slick-box .slick-active .catchText2 span{ opacity: 0; animation:text_anime_on 1s ease-out forwards; }

.slick-box .slick-active .catchText1 span:nth-child(1){animation-delay: 0.5s}
.slick-box .slick-active .catchText1 span:nth-child(2){animation-delay: 0.6s}
.slick-box .slick-active .catchText1 span:nth-child(3){animation-delay: 0.7s}
.slick-box .slick-active .catchText1 span:nth-child(4){animation-delay: 0.8s}
.slick-box .slick-active .catchText1 span:nth-child(5){animation-delay: 0.9s}
.slick-box .slick-active .catchText1 span:nth-child(6){animation-delay: 1.0s}
.slick-box .slick-active .catchText1 span:nth-child(7){animation-delay: 1.1s}
.slick-box .slick-active .catchText1 span:nth-child(8){animation-delay: 1.2s}

.slick-box .slick-active .catchText2 span:nth-child(1){animation-delay: 2.5s}
.slick-box .slick-active .catchText2 span:nth-child(2){animation-delay: 2.6s}
.slick-box .slick-active .catchText2 span:nth-child(3){animation-delay: 2.7s}
.slick-box .slick-active .catchText2 span:nth-child(4){animation-delay: 2.8s}
.slick-box .slick-active .catchText2 span:nth-child(5){animation-delay: 2.9s}
.slick-box .slick-active .catchText2 span:nth-child(6){animation-delay: 3.0s}
.slick-box .slick-active .catchText2 span:nth-child(7){animation-delay: 3.1s}
.slick-box .slick-active .catchText2 span:nth-child(8){animation-delay: 3.2s}

@keyframes text_anime_on {
	0% {opacity:0;}
	100% {opacity:1;}
}

javascript
最後の2行でクラス指定

$.fn.letterSpan = function() {

$(this).each(function() {
    var text = $.trim(this.textContent),
        html = "";

    text.split("").forEach(function(v) {
        html += "<span>" + v + "</span>";
    });

    this.innerHTML = html;
    });
};

$(".catchText1").letterSpan();
$(".catchText2").letterSpan();

テキストを1文字ずつ順番に表示させる

Filed under: css,JavaScript — kdcs @ 2023年6月7日 水曜日

<この内容は不採用>

タイトルや見出しなどを1文字ずつフェードインさせる記述で改行にも対応。

例はトップページのスライダー内のタイトルのもの

htmlの記述

<div class="catchPosition inner">
<div class="catchText1">キャッチコピー1<br>メインタイトル1</div>
</div><!--/.catchPosition-->

cssの記述
※ポイントは疑似要素:first-lineで1行目のスタイルを変更しているところ

.slick-box .catchPosition {
    width: 100%;
    margin: auto;
    color: #fff;
    text-align: center;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    z-index: 200;
}

.slick-box .catchText1 {
    font-family: "游明朝", YuMincho, "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN", "MS P明朝", "MS 明朝", serif;
    font-size: 36px;
}
.slick-box .catchText1:first-line {
    font-size: 24px;
}
.catchText1,
.catchText1 span {
  opacity: 0;
}

javascript(jQery使用)
※ポイントはreplaceでbrタグをそのまま出力して改行に対応させているところ

$(window).on('load', function(){
    var text_wrap = '.catchText1'; //適用させる要素のクラス
    var delay_speed = 80; //文字が出るスピード(ミリ秒)
    var fade_speed = 500; //文字がフェードするスピード(ミリ秒)
    var str;
    $(text_wrap).css('opacity','1');
    var firsttxt = $(text_wrap).html();
    str = firsttxt.replace(/<br>/g,'\n');
    $(text_wrap).html('');
    for (var i = 0; i < str.length; i++) {
        $(text_wrap).append('<span class="text_span">'+str.substr(i, 1).replace(/\n/, "<br>")+'</span>');
        $(text_wrap).children('span:last-child').delay(delay_speed * i).animate({opacity:'1'}, fade_speed);
    }
    setTimeout(function(){$(text_wrap).html(firsttxt)},str.length*delay_speed+fade_speed);
});

WordPress 自動ログアウト

Filed under: functions.php,wordpress — kdcs @ 2023年5月29日 月曜日

ログイン時から一定の時間が経過すると自動でログアウトさせる。
時間設定どおり、操作中でもログアウトする。

functions.phpに以下記述

// 一定期間経過で自動ログアウト
add_filter( 'auth_cookie_expiration', 'stay_logged_in' );
function stay_logged_in( $expire ) {
 return 86400; // 60秒 * 60分 * 24時間=1日
}

ログインの後、一定時間操作が無い場合に自動でログアウトさせる。

//一定時間操作がない場合に自動ログアウト
add_action( ‘admin_init’, ‘mytheme_admin_init’ );
function mytheme_admin_init() {
add_filter( ‘auth_cookie_expiration’, ‘mytheme_auth_cookie_expiration’, 10, 3 );
$user = wp_get_current_user();
wp_set_auth_cookie( $user->ID, true );
}
function mytheme_auth_cookie_expiration( $expiration, $user_id, $remember ) {
if ( $remember ) $expiration = 3600; // 60秒 * 60分 =1時間
return $expiration;
}

WordPress 投稿一覧に最終更新日を追加する

Filed under: functions.php,wordpress — kdcs @ 2023年4月21日 金曜日

WordPress 投稿一覧に最終更新日を追加する
functions.php

// 投稿一覧に最終更新日を表示する並び替えも可 ------------------------------------------------------
add_filter( 'manage_edit-post_columns', 'aco_last_modified_admin_column' );
 
// 最終更新日の列を作成
function aco_last_modified_admin_column( $columns ) {
  $columns['modified-last'] =__( '最終更新日', 'aco' );
  return $columns;
}
add_filter( 'manage_edit-post_sortable_columns', 'aco_sortable_last_modified_column' );
 
// 最終更新した時間で記事を並べ替える
function aco_sortable_last_modified_column( $columns ) {
  $columns['modified-last'] = 'modified';
  return $columns;
}
add_action( 'manage_posts_custom_column', 'aco_last_modified_admin_column_content', 10, 2 );
 
// 出力をフォーマット
function aco_last_modified_admin_column_content( $column_name, $post_id ) {

  if ( 'modified-last' != $column_name )
    return;

  $modified_date   = the_modified_date( 'Y年Md日' );
 
  echo $modified_date;
}

最終更新日時(時間付き)

function last_modified_admin_column( $columns ) {
 $columns['modified-last'] =__( '最終更新日', 'aco' );
 return $columns;
}
add_filter( 'manage_edit-post_columns', 'last_modified_admin_column' );
 
function sortable_last_modified_column( $columns ) {
 $columns['modified-last'] = 'modified';
 return $columns;
}
add_filter( 'manage_edit-post_sortable_columns', 'sortable_last_modified_column' );
 
function last_modified_admin_column_content( $column_name, $post_id ) {
 if ( 'modified-last' != $column_name )
 return;
  
 $modified_date = the_modified_date( 'Y年Md日Ag時i分' );
 echo $modified_date;
}
add_action( 'manage_posts_custom_column', 'last_modified_admin_column_content', 10, 2 );

カスタム投稿タイプの一覧に最終更新日時を追加(時間付き)

function my_manage_edit_columns( $columns ) {
	$columns['modified'] = '更新日';
	return $columns;
}
add_filter( 'manage_edit-{カスタム投稿タイプ}_columns', 'my_manage_edit_columns' );

function my_manage_edit_sortable_columns( $columns ) {
	$columns['modified'] = 'modified';
	return $columns;
}
add_filter( 'manage_edit-{カスタム投稿タイプ}_sortable_columns', 'my_manage_edit_sortable_columns' );

function my_manage_posts_custom_column( $column_name ) {
	if ( 'modified' == $column_name ) {
		the_modified_date('Y年Md日Ag時i分');
	}
}
add_action( 'manage_{カスタム投稿タイプ}_posts_custom_column', 'my_manage_posts_custom_column' );

サイト内検索

カテゴリー

最近の投稿

↑上に戻る