2ch風のLP記事がネット広告業界で流行した時期がありました。ステマ規制法も始まり、LPには「広告」や「PR」という文言表記も必要になったので、今では広告効果は薄いでしょうが、開発メモとして残します。
目次
IDっぽいランダム文字列を出力するショートコード
function random_string_shortcode($atts) {
// 使用する文字の定義
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
// ショートコードの属性を解析
$a = shortcode_atts( array(
'length' => 9, // デフォルトの文字列長は9文字
), $atts );
// 文字列長を取得
$length = absint($a['length']);
// ランダムな文字列を生成
$random_string = '';
for ($i = 0; $i < $length; $i++) {
$random_string .= $characters[random_int(0, strlen($characters) - 1)];
}
return $random_string;
}
add_shortcode('random_string', 'random_string_shortcode');
このソースコードでは、random_string
という名前のショートコードを定義し、length
という属性で生成するランダムな文字列の長さを指定することができます。
デフォルトの文字列長は9文字であり、指定した長さのランダムな文字列を生成して出力します。生成される文字列には、整数(0-9)、アルファベットの大文字(A-Z)、アルファベットの小文字(a-z)がランダムに組み合わさります。たとえば、[random_string length="12"]
のように使用することで、12文字のランダムな文字列を生成し出力することができます。
日時の開始と終了時点、ランダムIDを出力するショートコード
日付、時間、ID の部分を出力するにはこちら。
function custom_datetime_shortcode($atts) {
// ショートコードの属性を解析
$a = shortcode_atts( array(
'format' => 'Y/m/d H:i', // デフォルトの日時フォーマット
), $atts );
// ショートコードの使用回数を取得
static $count = 0;
$count++;
// 最初の使用場面では現在時刻から7時間遅れた日時を出力
if ($count === 1) {
$datetime = date('Y/m/d H:i', strtotime('-7 hours'));
}
// 最後の使用場面では現在時刻から1時間遅れた日時を出力
elseif ($count === do_shortcode('[total_count]')) {
$datetime = date('Y/m/d H:i', strtotime('-1 hours'));
}
// 途中の使用場面では、最初から最後の間で時系列に沿って日時を出力
else {
$start_datetime = strtotime('-7 hours');
$end_datetime = strtotime('-1 hours');
$interval = ($end_datetime - $start_datetime) / (do_shortcode('[total_count]') - 1);
$current_datetime = $start_datetime + ($count - 1) * $interval;
$datetime = date('Y/m/d H:i', $current_datetime);
}
// 日時を指定のフォーマットで出力
return date($a['format'], strtotime($datetime));
}
add_shortcode('custom_datetime', 'custom_datetime_shortcode');
function custom_total_count_shortcode() {
// ショートコードの使用回数を返す
return do_shortcode('[/custom_datetime]');
}
add_shortcode('total_count', 'custom_total_count_shortcode');
このソースコードでは、custom_datetime
という名前で、最初の使用場面では現在時刻から7時間遅れた日時を、最後の使用場面では現在時刻から1時間遅れた日時を生成し、途中の使用場面では、最初から最後の間で時系列に沿って日時を出力します。また、format
という属性で日時のフォーマットを指定することができます。デフォルトの日時フォーマットはY/m/d H:i
になっています。
最後にtotal_count
という名前のショートコードを定義しています。このショートコードは、custom_datetime
ショートコードの使用回数をカウントし、その合計値を返します。