追加ヘッダーの設定

追加ヘッダー .htaccessに

# Security Headers

Header always set Strict-Transport-Security: “max-age=31536000” env=HTTPS
Header always set Content-Security-Policy: “upgrade-insecure-requests”
Header always set X-Content-Type-Options: “nosniff”
Header always set X-XSS-Protection: “1; mode=block”
Header always set Expect-CT: “max-age=7776000, enforce”
Header always set Referrer-Policy: “no-referrer-when-downgrade”
Header always append X-Frame-Options: SAMEORIGIN
Header always set Permissions-Policy: “geolocation=(), midi=(),notifications=(),push=(),sync-xhr=(),accelerometer=(), gyroscope=(), magnetometer=(), payment=(), camera=(), microphone=(),usb=(), xr=(),speaker=(self),vibrate=(),fullscreen=(self)”

# End Security Headers

luminousを使ったギャラリーの覚書

luminousを使って、

lightboxを使った時に、rel=”lightbox[***]” を使って、1ページ内に複数のギャラリーを設置

と同じようなことをするには 

<a href="--------" class="luminous-***" data-set="***"><img -------></a>
WordPressの場合は、***の部分をpostIDにするなりして、まとめたい画像を同じ文字でそろえる。
var luminousElem_array = [];


//luminousで始まるclassの取得 let luminousElem = document.querySelectorAll(`[class^='luminous']`); if( luminousElem !== null ) { luminousElem.forEach(function(elem) {
//data-setの値で配列作成 luminousElem_array.push(elem.dataset.set); });
//luminousElem_arrayから重複分を削除 const newluminousElem_array = luminousElem_array.filter((element, index) => luminousElem_array.indexOf(element) === index); newluminousElem_array.forEach(function(elem) {
//LuminousGalleryを作成 new LuminousGallery(document.querySelectorAll('.luminous-'+elem)); }); }

適当なので、もっと効率の良い方法がありそうです。

 

WordPressのCSSが保存できない

久しぶりに一般に配布されているWordPressのテーマを修正する機会があったのですが、なぜか外観のカスタマイズにある 追加CSS が保存できない。

普段は、UNDERSCORES https://underscores.me/ を利用した当社オリジナルのテーマでサイトを作成するので原因がちょっと新鮮だったので記録しておきます。

 

原因は、2つ

1.間違ったCSS文法は保存できない!

2.一部の記号は保存できない!

 

解決策は、

スペルミスなど間違わないことと。全角も要注意

2番目の原因は、

= 

などが受け付けないようで、

html[lang=”ja”] body{}

などは、、保存できません。

 

面倒がらずに、function.phpに wp_enqueue_style を使って

追加の cssファイルの指定をして、そこに書いておくのが無難です。

なんか、初心に戻った感じで少し新鮮なトラブル解決でした。

 

 

ACF proの画像フィールドで配列を返す場合の注意

ACFで画像フィールドは、デフォルトで配列を返してくれますが、
グループや繰り返しフィールを利用した際に、
画像フィールドに、同じフィールド名を使用した場合、
重複する2つ目以降は、配列ではなく、画像IDしか返してくれません。

1つ目は、ちゃんと、配列を返してくれます。

これは、「仕様」なのか「バグ」なのか・・・

グループを作って、複写して利用する場合などは注意が必要。
多分、ファイルフィールドも同じ状況。


単一階層の場合は、当然フィールド名はかぶることが出来ない。
(当然、値は上書きされる)

フィールドラベル 「画像A」   / フィールド名 [‘img_a’]

フィールドラベル 「イメージA」   / フィールド名 [‘img_a’] 駄目×

 


グループの場合、2階層目のフィールド名はかぶっても大丈夫
(・・・この考え方が間違ってる?)

[‘groupA’][‘img_a’] 配列が返される

[‘groupB’][‘img_a’] 画像IDが返される

 

 

仕方がないので、こんな感じに、配列の場合と、画像IDで返ってくる場合に分けてみた

$img = get_field(‘groupA’)[‘img_a’];
$src=;
if(is_array($img)):
$src= $img[‘url’];
else:
$src = wp_get_attachment_image_src( $img, ‘large’ )[0];
endif;
echo  ‘<img src=”‘.$src.‘”  />’;
ファイルの時は、

$src = wp_get_attachment_url( $img);

Custom Field Suiteの「ループ(複製フィールド) 」を CFS()->getを使わずに出力

Custom Field Suiteのプラグインを停止しても既存のカスタムフィールドにすでに入力しているデータを出力したい場合、get_post_meta()をつかってどうやって処理すればよいのか。

Custom Field Suiteの繰り返しフィールドは、
通常
CFS()->get(‘繰り返しフィールド名’,ポストID);
で出力されますが、
get_post_meta(ポストID,’繰り返しフィールド名’,false);
では出力できません。

例えば、
繰り返しフィールド名 ‘photos’;
 その中に、’photo_url’と’photo_text’の2つのフィールドを設定した場合。

Custom Field Suiteを使っている場合は、
$photos = CFS()->(‘photos’,$post->ID);

foreach($photos as $photo){
echo $photo[‘photo_url’];
}

としていると思いますが、

$photo_url = get_post_meta($post->ID, ‘photo_url’, false);
$photo_text = get_post_meta($post->ID, ‘photo_text’, false);
$count_total = count($photo_url);
$photos = array();
for($i = 0; $i < $count_total; $i++){ $photos[$i][‘photo_url’]=$photo_url[$i]; $photos[$i][‘photo_text’]=$photo_text[$i]; } とすることで、 CFS()->getを使わずに
同じ$photosを得ることができます。

ちょっと面倒ですが、
Custom Field Suite
から
Advanced Custom Fields PRO
に乗り換えるときなど、過去のデータを表示するにはこの処理が必要になるでしょう。

リダイレクトが繰り返し行われました

さくらインターネットを利用中のサイトで、昨日(2020/5/29)から このページは動作していません www.example.comでリダイレクトが繰り返し行われました。 Cookie を消去してみてください. ERR_TOO_MANY_REDIRECTS と出る場合との報告が上がっています。 Really Simple SSLを使用してSSLをリダイレクトされている場合は、 サイトルートの .htaccessが以下のようになっていたら、 # BEGIN rlrssslReallySimpleSSL rsssl_version[3.2.X] RewriteEngine on RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] # END rlrssslReallySimpleSSL 下記ように書き換えるとなおります。 # BEGIN rlrssslReallySimpleSSL rsssl_version[3.3.3] RewriteEngine on RewriteCond %{HTTPS} !=on [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] # END rlrssslReallySimpleSSL サーバーの設定が変わったのではないでしょうか。 さくら側からの事前報告があったかどうかは不明です。

googlemapの埋め込み方(覚書)

パターン1|非公式:embedで出力 q= 検索できたキーワードを+でつなげて引数に使用 サイトの言語設定が反映できる

パターン2|非公式:embedで出力 q= 経度と緯度とキーワードを引数に使用 サイトの言語設定が反映できる

パターン3|公式:embedで出力する公式な方法はAPI_KEYが必要  サイトの言語設定が反映できる
https://developers.google.com/maps/documentation/embed/get-api-key

採用!パターン4|公式:通常の出力 サイトの言語設定が反映できない。OSの言語が反映?

Warning: A non-numeric value encountered in … /usceshop.class.php on line 7973

welcart + php7.0環境で下記エラーが出る場合。 (たぶん、ポイントを使用しない設定でおきる) Warning: A non-numeric value encountered in … /wp-content/plugins/usc-e-shop/classes/usceshop.class.php on line 7973 Warning: A non-numeric value encountered in … /wp-content/plugins/usc-e-shop/classes/usceshop.class.php on line 7979 該当するファイルの 7973行目と7979行目の $use_point が 文字列として扱われているようなので、 7972行目 $use_point = $entries[‘order’][‘usedpoint’]; を $use_point = (int)$entries[‘order’][‘usedpoint’]; に変えてしまえば治るとおおもいます。

BackWpUp 〜ジョブが開始されましたが、10秒間応答しません〜

ジョブが開始されましたが、10秒間応答しません。

Job has started, but not responded for 10 seconds

出回っている情報を一通りためして、

SSLのとリダイレクト絡みの問題とのことなので、.htaccessなど変更

サーバーの自己接続:「応答テストO.K.」

までは出来たのに、未だエラーは消えない。

ということで、プラグインサイトのFAQであっさり解決

 

wp-config.phpに

define( ‘ALTERNATE_WP_CRON’, true );

を追加。

以上

HOME