Category Archives: WordPress

の「ループ(複製フィールド) 」を 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 );

を追加。

以上

welcart拡張プラグイン「Item List Layout」使用時の非公開設定

WordPressプラグインでショッピングサイトを作るプラグインwelcatの拡張プラグイン「welcart商品一覧レイアウト拡張プラグイン Item List Layout」

ですが、

wcex_item_list_layout/wcex_item_list_layout.php

$ill_query[‘post_status’] = ‘publish’;

部分は、

if ( is_user_logged_in() ) :
    $ill_query[‘post_status’] = array( ‘publish’, ‘private’ );
else:
    $ill_query[‘post_status’] = ‘publish’;
endif;

の方が良いのでは?

と未だ、検証途中ですが・・・

 

オリジナルの状態だと、未公開の投稿が表示されないので、
とりあえず商品を登録してみて、表示を確認するということができない。

ここ別ページは、URLを直接叩けば表示されますが、一覧には表示されないですよね。

 

 

 

WordPress4.5で、Jqueryエラー

WordPress4.5バージョンアップ時のJavaScriptのエラー。

今までは、

$(‘a[href=#page]’).click(function() {

で問題なかった箇所が、

$(‘a[href=#page]’).click(function() {

となります。ハッシュ記号 (#) はクォートされなければいけないということです。

他にもエラーになる箇所があるかも・・・

 

WordPressのアップグレードやFTPのトラブル対策

WordPressのアップグレードに失敗したり

FTPの接続画面が出てきたり

更新中にエラー: wp-content ディレクトリが見つかりません。

と言われたら
wp-config.phpの

/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
すぐ後に

define(‘FS_METHOD’, ‘direct’);

を一行追加

これを追加することで、ファイルの所有者は、apacheなどになります。

失敗する原因は、phpの設定、FTPサーバーの設定、SSL、ファイルの所有者、など、サーバーやインストール時の環境によって様々なので、ダイレクトにWordPressとphpに任せる設定が楽で、安全かと思います。

wp-config.php
にサーバーのパスなどの情報を追加するという解決策もWEB上にたくさんありますが、
wp-config.phpをHackされたら終わりだなぁ〜と思うのです。
・・・某サーバーで改ざんされてたし・・・

カスタム投稿タイプを、任意に複数、選択してRSSに反映させる

カスタム投稿タイプのフィードを個別に選択して表示したいとき。

たとえば、このサイトは、

「通常の投稿」の他に、カスタム投稿タイプを使って、「製作実績」や「トップのスライド」を管理しています。

「通常の投稿」と「製作実績」のRSSは取得したいけど、「スライド」は取得したくない場合など、フィードを取得するURLのパラメーターで管理できれば楽かも。

 

ということで、ちょっと考えてみた。

コード

function.phpに追加するコード

function my_feed_request($vars) {
 if ( isset($vars['feed']) && !isset($vars['post_type']) ){
 $my_feed_post_type = $_GET['post_type'];
 $my_feed_post_type_array = explode(",",$my_feed_post_type);
 $vars['post_type'] = $my_feed_post_type_array;
 }
 return $vars;
}
add_filter( 'request', 'my_feed_request' );

 

使用方法

通常のRSS取得のURL

  •  https://www.croquis.jp/?feed=rss2&post_type=post

カスタム投稿タイプを、任意に複数、選択してRSSを取得するURL

  • https://www.croquis.jp/?feed=rss2&post_type=post,works

取得したいカスタム投稿タイプのスラッグをカンマ区切りで追加していく

 

 

‘post_type’のパラメーターを使わずに、’my_post_type’とかの独自変数を使った方がいいかもしれないし、パラメーターの存在確認も必要かもしれないけど・・・