Pocket

wordpressプラグインでおなじみの、ACF(advanced Custom fields)

リピーターフィールド内のラジオボタンで、ラベルと値を出力しようとしてちょっと戸惑ったので備忘録です。

前提

まず、ACFのカスタムフィールドの設定は、

repeater_field_nameというリピーターフィールドの中に、btn_nameというラジオボタンのフィールドを設定し、

選択肢を、

3f : 3F
loft : ロフト
2f-only : 2Fまで

と設定しました。
で、「2f-only : 2Fまで」の時は値を表示しないようにしたかったのです。

上手くいかなかった出力方法

通常通りのリピーターフィールドとラジオボタンの出力のコードを書きました。


<?php
if( have_rows('repeater_field_name') ):
while ( have_rows('repeater_field_name') ) : the_row();
//ラジオボタンのデータを代入
$field = get_sub_field_object(‘field_name’);
$value = get_sub_field(‘field_name’);
$label = $field[‘choices’][ $value ];
?>

<?php if($value <> '2f-only'):?>
<p><?php echo $label; ?>
<?php endif;
endwhile;
else :
// no rows found
endif;
?>

これだと「Array」と表示されるだけ。まいったなぁと思ったときは頑張ってDocumentationを確認しましょう。

上手くいった出力方法

調べてみたら、get_sub_field_objectは、has_sub_fieldループ内で使用する必要があるようです。

なので、次のようにコードを修正。


<?php
if( get_field('repeater_field_name') ):
while ( has_sub_field('repeater_field_name') ) :
//ラジオボタンのデータを代入
$field = get_sub_field_object(‘field_name’);
$btn_value = $field['value'];
$value = $btn_value['value'];
$label = $btn_value[‘label’];
?>

<?php if($value <> '2f-only'):?>
<p><?php echo $label; ?>
<?php endif;
endwhile;
else :
// no rows found
endif;
?>

ここまで至るのに諸々ありましたが、迷ったときはprint_r()関数で配列を全て出力してみると糸口をつかめます。

出力した配列

Array
(
[ID] => 6024
[key] => field_58e4c643fc29f
[label] => 3F または ロフト
[name] => repeater_field_name_0_field_name
[prefix] => acf
[type] => radio
[value] => Array
(
[value] => 2f-only
[label] => 2Fのみ
)

[menu_order] => 3
[instructions] => 3階建てまたはロフトをお選びください。
[required] => 0
[id] =>
[class] =>
[conditional_logic] => 0
[parent] => 6020
[wrapper] => Array
(
[width] =>
[class] =>
[id] =>
)

[_name] => field_name
[_prepare] => 0
[_valid] => 1
[choices] => Array
(
[3f] => 3F
[loft] => ロフト
[2f-only] => 2Fのみ
)

[allow_null] => 0
[other_choice] => 0
[save_other_choice] => 0
[default_value] => ロフト
[layout] => horizontal
[return_format] => array
)

誰かのお役にたれてば幸いです。

参考:ACF Docmentation

Pocket

Pocket

プラグインアップデート中に、

「Briefly unavailable for scheduled maintenance. Check back in a minute.」

のメッセージがでて、サイト側も管理画面側も使えなくなってしまいました・・

どうしよう!って慌てずにgoogleに聞きましょう。

原因は「.maintenance」というファイル

wordpressのディレクトリ内に上記ファイルがあると思うので削除しましょう。

.maintenance

アップデート中に作成されるファイルですが、画面遷移やアップデートの失敗でファイルが残ってしまうことがあるようですね。

消してサイトが適切に見れればOKです。

お疲れ様でした。

 

Pocket

Pocket

最近のサイトは運用を考えて、ほとんどACFでカスタムフィールドを作って納品してます。

が、カスタムフィールドの値がプレビューに反映されないことが判明しました・・。

それじゃ困るので、早速検索。

親切な人がコード書いていてくれました~

function.phpに下記を記載

/*-------------------------------------------*/
/*  カスタムフィールドもプレビューできるようにする
/*-------------------------------------------*/
function get_preview_id($postId) {
    global $post;
    $previewId = 0;
    if ( isset($_GET['preview'])
            && ($post->ID == $postId)
                && $_GET['preview'] == true
                    &&  ($postId == url_to_postid($_SERVER['REQUEST_URI']))
        ) {
        $preview = wp_get_post_autosave($postId);
        if ($preview != false) { $previewId = $preview->ID; }
    }
    return $previewId;
}

add_filter('get_post_metadata', function($meta_value, $post_id, $meta_key, $single) {
    if ($preview_id = get_preview_id($post_id)) {
        if ($post_id != $preview_id) {
            $meta_value = get_post_meta($preview_id, $meta_key, $single);
        }
    }
    return $meta_value;
}, 10, 4);

add_action('wp_insert_post', function ($postId) {
    global $wpdb;
    if (wp_is_post_revision($postId)) {
        if (count($_POST['fields']) != 0) {
            foreach ($_POST['fields'] as $key => $value) {
                $field = get_field($key);
                if ( !isset($field['name']) || !isset($field['key']) ) continue;
                if (count(get_metadata('post', $postId, $field['name'], $value)) != 0) {
                    update_metadata('post', $postId, $field['name'], $value);
                    update_metadata('post', $postId, "_" . $field['name'], $field['key']);
                } else {
                    add_metadata('post', $postId, $field['name'], $value);
                    add_metadata('post', $postId, "_" . $field['name'], $field['key']);
                }
            }
        }
        do_action('save_preview_postmeta', $postId);
    }
});

ネタ元はコチラです。
[WordPress]カスタムフィールドの値もプレビューする

Pocket

Pocket

結構お世話になっている、MapPress Easy Google Maps。Pro版も何度か使いましたが、あるサイトでmapが表示されず焦ったので備忘録。

現象

枠だけでて表示されない。↓こんな感じです。

mappressが表示されない

確認事項

まず、確認ですがgoogle mapを表示させるためには、API登録が必要になってます。サイトの登録ミスやキーのミスがないか確認します。まぁ、ここにミスがあると記事へ挿入段階でうまくいきませんが・・。

やったこと

googlemapの呼び出しだけうまくいってないようでしたので、googlemapそのものはjavascriptで呼び出しているので、その確認をします。

MapPressの設定画面を見てみると、ありました。「Output scripts in footer」と。scriptをヘッダーではなくfooterで呼び出しているんですね。

Output scripts in footer

スクリプトの順番のせいかな~。これで解決とチェックを外して確認すると、まだ表示されない・・どうしましょ。

 

あれこれやる前に基本に戻ってちょっと考えます。

プラグインが正しく動かない場合は・・・他のプラグインを止めてみます。

MapPress Easy Google Mapsと相性の悪いプラグイン

僕の場合は以下でした。

  • Head Cleaner

とりあえず、停止で対応しちゃいました。

慌てる前に冷静に基本的なことを考えないとですね。

他にもあったら教えてください。

Pocket

Pocket

Pocket

Pocket

画像がたくさん並んでいると、クリックして拡大するのは面倒だし、ぱっと大きい画像を表示したいことってよくありますよね。

色々な方法があるのですが、シンプルな方法がみつかりましたので、備忘録です。

jqueryを使うので読み込み忘れないようにしてください。

準備(HTMLとCSS)

メイン画像とサムネイル画像を表示します。

#mainImage の中に画像をメイン画像を設定します。

サムネイル画像は #imageList の中です。

HTML

 
<div id="mainImage">
<img src="sample1.jpg" />
</div>

<div id="imageList">
<ul>
<li><img src="sample1.jpg"></li>
<li><img src="sample2.jpg"></li>
<li><img src="sample3.jpg"></li>
<li><img src="sample4.jpg"></li>
<li><img src="sample5.jpg"></li>

</ul>

</div>

CSS

画像を差し替えるって所がポイントなので、メインの画像と同じサイズの画像をサムネイル画像にセットします。

どんなサイズでもいいんですが、


#imageList img { width:サムネイルの大きさ; height: サムネイルの大きさ; object-fit: cover;}

なんて感じで設定すると、比率が変わらず小さくなるので、便利かと思います。

javascript


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
 
    // 「imageList」内の「img」をマウスオーバーした場合
    $('#imageList img').hover(function(){
 
        // マウスオーバーしている画像をメインの画像に反映
        $('#mainImage img').attr('src', $(this).attr('src'));
 
    });
 
});
</script>

これで、サムネイル画像をマウスオーバーするとメイン画像が切り替わります。

Pocket

Pocket

Pocket

Pocket

テーマのアップデートなどで、既に言語ファイルがあるが、元のPOTファイルが更新された場合の対応方法です。

  1. Poeditを起動して、メニュー[ファイル]-[開く]を選択。
  2. 翻訳済みのPOファイル(旧バージョン)を選択して「開く」を押す。
  3. [カタログ]-[POTファイルを元に更新します]を選択。
  4. 新しくなったPOTファイルを選択して「OK」を押下。

以上で完了。

簡単でよかった。

Pocket

Pocket

いままで諸問題でCGIのフォーム+wordpressで運用していたサイトを、余計な管理が増えないように、

WordPressだけで完結するよう、CGIのフォームをContact Form7に移行することにしました。

なぜかContact Form7が404エラー

既存のフォームをContact Form7にし、送信すると404エラーとなってしまいました。

試しにデフォルトの状態のフォームを作り、テストページに設置すると、きちんと動きます。

?なんだろう??

原因と解決方法

解決方法は単純で、入力項目に[name]を使っていたことでした。

nameはwordpressのクエリーに使用されているので使ってはいけないとのことです。

皆様気を付けましょう

オフィシャルのFAQ

Pocket

Pocket

お客様からのご依頼で、heteml(ヘテムル)からさくらインターネットにwordpressの移行を行っていたのですが、

なぜか、移行したwordpressが動かない・・・

ソースが表示されてしまう。

試しにクイックインストールや、手動でもほかのディレクトリにインストールすると動く・・

試しにwordpressがあるディレクトリにアップしてみたphpinfo();も動かない・・?

なんだなんだ~?って慌ててたら単純なことでした・・

wordpressがあるディレクトリ内の.htaccessに、

AddHandler php5.4-script .php

の記載があり、これを削除(コメントアウトでも可)してあげればよかっただけでした。

無駄に慌てて損したので、皆様同じようにハマらないように記載しておきます。

 

Pocket

Pocket

Multi Plugin Installerは、複数のWordpressプラグインを一括してインストールできるプラグインです。

新規サイトを立ち上げたときなど、いつも同じようなプラグインをインストールするので、こちらのプラグインを利用するとウェブサイトの構築がだいぶ捗ります。

しかも、このプラグインは設定データをインポート&エクスポートできるし、テキストでプラグイン名を入れるだけでもインストールできるの非常に便利なプラグインです。

活用して時短を図りましょう!

はじめに

このプラグインの良いところ

  1. 複数のWordPressプラグインを同時に一括してインストールできる。
  2. プラグインの一括インストール方法は4パターンある。
    プラグインの名前、ZIPファイルのURL、自分のPC上のデータ、設定データを登録してインストールします。
  3. 設定ファイルをインポート&エクスポートできる。
  4. プラグインのデータのバックアップ機能がある。

インストール方法

管理画面から検索してインストールして下さい。または、WordPress.org からダウンロードし、アップロードしてインストールして下さい。

  1. WordPress管理画面 > プラグイン > 新規追加 >「Multi Plugin Installer」で検索する。
  2. WordPress.org からダウンロード

プラグインの使い方

管理画面から一括してプラグインをインストールできます。

管理画面

プラグインの管理画面はダッシュボード左のメニューバーにあります。

WordPress管理画面 > Multi Plugin Installer

プラグイン一括インストール画面

Multi Plugin Installerの、プラグイン一括インストール方法は4パターンあります。ほとんどの場合、プラグインの名前でインストールされるかと思います。

下記画像の通り、一番大きいスペースに、インストールしたいプラグインのリストを入力し、「Install&Activate Plugins」をクリックすると、インストールして有効化してくれます。

20150527-02

 

インストールの進行状況と結果

通常のプラグインのインストールとほぼ同じ画面が表示されます。既にインストールされているプラグインがある場合はエラーになり、重複してインストールされることはありません。

また、キチンと調べた訳ではありませんが、Wordpressの公式Plugin Directoryにないプラグインは、名前ではインストールできないようです。

まとめ

Multi Plugin Installerは、複数のWordpressプラグインを一括してインストールできる非常に便利なプラグインです。

新規サイトを立ち上げたときなど、いつも同じようなプラグインをインストールするので、こちらのプラグインを利用するとウェブサイトの構築がだいぶ捗ります。

ただ、一回利用したら、継続して使うことはないかと思いますので、利用後は停止、できれば削除しておきましょう!

最後までお読み頂き、ありがとうございます。

もし役に立ったなーと思われたら、ソーシャルメディアでこの記事を共有してください!

Pocket

Pocket

wordpressでのウェブサイト構築時にほぼ100%と言っていいくらい、フォームには「Contact Form7」というプラグインを利用させていただいてます。

今回、ページごとに問い合わせフォームを設置し、件名を「【ページタイトル】についてのお問い合わせ」という形で送信したくて、調べてみました。

特別なメールタグ

公式サイトのTipsの項目に用意されていました。

コチラはメールタグなので、メールでのみ表示されます。

タグ 説明
[_remote_ip] このタグは送信者の IP アドレスで置換されます。
[_user_agent] このタグは送信者のユーザーエージェント情報で置換されます。
[_url] このタグはコンタクトフォームの URL で置換されます。
[_date] このタグは送信された日付で置換されます。
[_time] このタグは送信された時刻で置換されます。
[_post_id] このタグはコンタクトフォームを含んだ投稿の ID で置換されます。
[_post_name] このタグはコンタクトフォームを含んだ投稿の名前(スラッグ)で置換されます。
[_post_title] このタグはコンタクトフォームを含んだ投稿のタイトルで置換されます。
[_post_url] このタグはコンタクトフォームを含んだ投稿のパーマリンクで置換されます。
[_post_author] このタグはコンタクトフォームを含んだ投稿の作成者の名前で置換されます。
[_post_author_email] このタグはコンタクトフォームを含んだ投稿の作成者のメールアドレスで置換されます。

上記のタグをメール本文に貼り付けます。

20150312-02

メールが送信されると、メール本文に情報が表示されます。

特別メールタグの利用時の注意点と問題

特別なメールタグは、Contact Form 7 が「投稿」または「ページ」の本文で設置される場合でのみ有効で、ウィジェットの中に設置された Contact Form 7 のフォームでは利用できない、という点で注意が必要です。また、カスタム投稿タイプでも利用できませんでした。

実は、今回のこのサイトの事例ページで利用したかったのですが、まだ実装できてません。時間が取れたときに再チャレンジしようと思います。

Pocket