3

私は 2 つの主な機能を持つ WordPress ウェブサイト/ブログに取り組んでいます。

  1. レポートを作成します。
  2. 最終報告書をまとめます。

ユーザーはレポートを作成し、必要なフィールドを選択して公開できます。その後、一日の終わりに、すべてのレポートから最終レポートを「コンパイル」できます (すべてのレポートのフィールドを連結します)。

テーマは 20 です (役に立つかもしれない場合に備えて)。

私のfunction.phpファイルでは、次のような foreach と行を使用して、最終レポートのすべてを連結します。

$Urgences_Environnementales .= htmlspecialchars("<br/>".get_field('Urgences_Environnementales', $idnumber->ID));
$avezvous_regardé_des_indices_de_temps_violent_aujourdhui .= htmlspecialchars(get_field('avezvous_regardé_des_indices_de_temps_violent_aujourdhui', $idnumber->ID));
$quelle_est_cette_raison .= htmlspecialchars(get_field('quelle_est_cette_raison', $idnumber->ID));

すべて同じように、フィールドごとに 1 行。ループが完了したら、フィールドを更新します。

update_field('Urgences_Environnementales',preg_replace('/(<br[\s]?[\/]?>[\s]*){2,}/', '<br/><br/>', htmlspecialchars_decode($Urgences_Environnementales)), $identificationRapport);
update_field('avezvous_regardé_des_indices_de_temps_violent_aujourdhui',preg_replace('/(<br[\s]?[\/]?>[\s]*){2,}/', '<br/><br/>', htmlspecialchars_decode($avezvous_regardé_des_indices_de_temps_violent_aujourdhui)), $identificationRapport);
update_field('quelle_est_cette_raison',preg_replace('/(<br[\s]?[\/]?>[\s]*){2,}/', '<br/><br/>', htmlspecialchars_decode($quelle_est_cette_raison)), $identificationRapport);

次に、次のような最終レポートに出力されます (これは単一のフィールドです)。

if(strip_tags(html_entity_decode(get_field('Urgences_Environnementales')))!=''){
   simplebox(strip_tags(html_entity_decode(get_field('Urgences_Environnementales')))!='', get_field('Urgences_Environnementales'));
}

そして、それらの分野では完璧に機能します。

私の問題は、配列で構成されたすべてのフィールド (ACF プラグインを使用して複数の選択肢を選択できるチェックボックス) がデータベースで空であることです...単一のレポートでは完全に表示されますが、最終レポートでは空白に表示されます。

例として、これは、私のアレイの 1 つの単一レポートについて、私のデータベースに表示されるものです。

a:4:{i:0;s:49:"L’indice d’intensité d’orage violent (STI)";i:1;s:35:"L’indice d’orage violent (TMPV)";i:2;s:34:"Potential Severe Storm Environment";i:3;s:6:"Autres";}

私の最終レポートの対応するフィールドは空です。

それらの配列を読み取り、データベースに正しく記録する方法について誰かが考えているでしょうか? foreach ループでそれらを文字列に変換できますか? 別のことをする必要がありますか?

さらにコードが必要な場合は、お気軽にお問い合わせください。WordPress テーマにある 3 つの関数 ( functions.phpreport.phpfinalreport.php )はすべて入れませんでした。行数が膨大になり、最も重要なものはここにあると確信しています。私が間違っている場合は、関数を投稿できます。

検索して検索しましたが、自分で答えを見つけることができないようですので、ここで助けを求めています。

PS: これは私の最初の投稿です。お勧めがあれば、私に送ってください。投稿を変更します。

ご助力ありがとうございます!

PPS: 英語が苦手で申し訳ありません。カナダの Qc 州モントリオール出身のフランス人です。

4

1 に答える 1

1

高度なカスタム フィールドは、一部の値をシリアル化された配列 (チェックボックス、リピーターなど) として保存します。コードは、文字列が返されることを前提としています。回答で提案したように、現在のコードでこれを説明する最も簡単な方法は、is_array()メソッドを使用して戻り値の型を確認し、別の内部ループを使用して要約を処理することです。このコードは、すべての値を連結したいだけだと仮定しています。別の配列を使用して、値が一意であることを確認することも簡単にできます。

// get the value from acf
$value = get_field( 'Urgences_Environnementales', $idnumber->ID );
// if it's already an array, use that, if not make it into an array with a single element
$value_arr = ( is_array( $value ) )? $value : array( $value );
$text = ""; // reset since this is in a loop
// concatenate each checkbox value
foreach ( $value_arr as $val ){
    $text .= $val . ', ';
}
// append it to the main summary
$Urgences_Environnementales .= htmlspecialchars( "<br/>". $text );
于 2014-07-15T06:13:30.707 に答える