カテゴリー
CSS

cssのキャッシュ無効化

最近WordPressさわってない…。

大したことではないのだが、cssのキャッシュを無効化する方法を記述。ファイルに日付をつけるだけだけど…。ファイルの更新日の認識だったけど、そうかキャッシュが無効になるのか。なるほどなるほど。

style.css?20190717

phpで自動化もできるみたい。

<link rel="stylesheet" href="/css/style.css?<?= filemtime('css/style.css'); ?>">
カテゴリー
WordPress

ログインしていないと閲覧できないようにする

すぐ忘れちゃう。。たぶん、過去にも書いている。

ログインしていないと閲覧できないようにする。絶対パスで読み込んでいるもの等、header.phpを通らないものは閲覧できてしまうので注意。

if (!is_user_logged_in()) {
    auth_redirect();
}

カテゴリー
WordPress

管理画面から記事を編集しようとすると500エラー

管理画面から特定の記事を編集しようとすると500エラーを返すというのでみてみた。どうやらリピーターフィールドを大量に使用している記事で、メモリーオーバしているよう。で、下記をwp-config.phpに記述。

define('WP_MAX_MEMORY_LIMIT', '1024M');

現場にはページを軽くしようという概念はないのだ。仕方ない。

下記の記事を参考にしました。ありがとうございます。
http://streamline-jp.net/nextlife/2015/09/16/10233/

カテゴリー
WordPress

posttypeのラベル名を表示

カテゴリーテンプレートでposttypeのラベルを表示させたくなった。んで、いつも悩むのである。とりあえず下記のコードで表示することができた。いつものごとく、あまり理解しないで実装している。ちゃんとしないとなあ。

<?php echo esc_html( get_post_type_object(get_post_type())->label ); ?>

カテゴリー
WordPress

記事がないカテゴリが表示されるという現象

ときに原因不明の事象が起こり、いろいろいじっているうちに回復するときがある。今回もそうだ。時間が限られているので原因究明までは至らないが、状況だけ残しておくこととす。

あるカスタム投稿の記事が無いにも関わらず、表画面からは項目名(タクソノミーの名前)を表示する不具合がおきた。結論として、カスタム投稿内のごみ箱を空にしたら回復した。ごみ箱の中に該当のタクソノミーに属する記事があったからだと思われる。しかし、ごみ箱には他のタクソノミーに属する記事も存在していた。それは表示されていない。まるごと削除してしまったので、その後調査はできず…!1時間も消費してしまった。午前中が終わってしまうので、現場からは以上です。

カテゴリー
その他

IEの互換表示設定

年に2回くらい問い合わせがある。IEで見られねーとか、動かねーとか。イントラネット(社内ネット)の場合、たいがいは「互換表示設定」で昔のIEに切り替わってるのが原因だ。オプションで「イントラネットは互換表示で表示する」のチェックを外すか、下記のをhtml内に記述すると良いらしい。

<meta http-equiv="X-UA-Compatible" content="IE=edge"/>

良いらしいと書いたのは、丁度この問い合わせがきたので、これから試すのだ。忘れないように記録しておくこととす。南無南無。

カテゴリー
CSS

Edgeでcalc()が効かない

例えば、width: calc(calc(100% / 3)とすれば幅をちょうど3分割になるように計算してくれる。いかに便利かというのはググってみてほしい。んで、今制作しているサイトをEdgeでみて愕然とした。calcが効いていないのである。calcは使えないんだっけ?使えるはずじゃん!なんでなんで。

で、検索したところ、IE11とEdgeではflexの中ではcalc()は使えないんだと。横並びをflexで使っていたのだった。

下記は参考サイト、ありがとうございます。他にもいくつか問題点が報告されているようです。

IE9/10から使えるCSS:calc()

カテゴリー
JavaScript

jQuaryでページ読み込み時にinputのイベントを発生させる

タイトルが変な感じだが、inputのvalueの長さでイベントを発生させたいのだが、ページ読み込み時に発生させることができなかったので、どうしようという案件。

どうも画像を読み込んだ時にはonloadイベント発生するが、タグがレンダリングされる時には、onloadイベントは発生しないようだ。なので、ページ読み込み時に$letterpackElements.each(function(){$(this).keyup();でkeyupイベントを発生させることで、.onの以降の処理も連動して(?)発生させることができた。よかった。実はパイセンが書いてくれたので、私はあまりよくわかっていない。

<script>
$(function(){
var $letterpackElements = $("[id^=letterpack_]");

$letterpackElements.on('keyup',function(){
var letterpack_num = ($(this).val());
if(letterpack_num.length > 10 && letterpack_num.length < 14){
var url='https://xxx/search/?requestNo1='+letterpack_num+'&locale=ja';
$(this).next('a').attr('href',url);
$(this).next('a').html("リンク表示");
}else{
$(this).next('a').attr('href','');
$(this).next('a').html("");
}
});
$letterpackElements.each(function(){
$(this).keyup();
});
});
</script>

カテゴリー
JavaScript

同じclass場合rowspanで列を結合するjQuery

テーブルの列で、同じclassの番号の場合、rowspanで結合するjQuery。配列に入れたcate-xxをfindして、番号込で同じ数値の時は結合する。

こちらのサイトを参考にしました。ありがとうございます。
http://study-upup.blogspot.com/2014/03/jqueryjquery.html

<table id="testTable-1">

<tr>
<td class="cate01-894">test</td>
<td class="cate02-894">user</td>
<td class="cate03-894">test</td>
<td class="cate04-894">完了</td>
</tr>

<tr>
<td class="cate01-894">test</td>
<td class="cate02-894">user</td>
<td class="cate03-894">test</td>
<td class="cate04-894">完了</td>
</tr>

</table>

<script>
var arr = ['cate01','cate02','cate03','cate04'];
var num = 0;
$.each(arr, function(i, value){
var cate = arr[num];
$(document).ready(function(){
$('#testTable-1').each(function () {
var pre_element = null;
var col_num = 0;
$(this).find('tr').each(function () {
var now_td = $(this).find('td[class^='+cate+']').eq( col_num );
if (pre_element == null) {
pre_element = now_td;
} else if (now_td.attr('class') == pre_element.attr('class')) {
now_td.remove();
if (pre_element.attr('rowspan') == null) pre_element.attr('rowspan', 1);
pre_element.attr('rowspan', parseInt(pre_element.attr('rowspan'),10) + 1);
} else {
pre_element = now_td;
}
});
});
});
num++;
})
</script>

 

カテゴリー
WordPress

ACFでタクソノミータームのフィールド値を取得

カテゴリ(タクソノミーターム)ごとにWebアイコンを変えたかったので、ACFでタクソノミータームごとにフィールドを設置できる設定を行ったが、表示方法がよくわからなかった。

こちらのブログに習って設置しました。ありがとうございます。

https://hirashimatakumi.com/blog/1365.html
Advanced Custom Fields で登録したタームのフィールド値を取得する方法

 

実際に設置したコードはこちら。Webアイコンの名前を出力している。

$terms = get_terms('タクソノミー名');
foreach ( $terms as $term ) {
$terms_id = $term->term_id; //termIDを取得

//省略

$icon_name = get_field('フィールド名','タクソノミー名_'.$terms_id);
echo $icon_name;

}