PlusOne Blog

「PHP」に関する記事

【WordPress】現在時刻取得・表示するには

PHPで現在時刻を取得するには
date()関数 を使用するが
WordPressでは、時間がずれてしまう。
 
Wordpressでは、内部的な時刻がUTC (世界標準時) が
利用されているので、date()関数を使用すると、時刻がずれてしますようです。
 
そのため、WordPressには「date_i18n()」関数が用意されており、
これを使用すると、正確に現在時刻が取得できます。
=========

$date = date_i18n(‘Y-m-d H:i:s’);

==========
 
その他の方法として「date_default_timezone_set()」で、
標準となる時刻を設定する方法もある。
=========

date_default_timezone_set(‘Asia/Tokyo’);
$date = date(‘Y-m-d H:i:s’);

==========
 
 
【date()関数】
=========

date(フォーマット形式 [, タイムスタンプ]([ ]は省略可));

==========
※タイムスタンプを省略した場合は、現在の日付時刻を返します。
 
■フォーマット形式
●年
 Y 西暦(4桁) 2015
 y 西暦(2桁) 15
 L うるう年→1、普通の年→0
●月
 m 月(2桁) 07
 n 月(先頭の0なし) 7
 M 英語(略語) jul
 F 英語 july
●日
 d 日(2桁) 09
 j 日(先頭の0なし) 9
 t その月の日数 31
 z その年の経過日数 121
●曜日・週
 D 英語(略語) Tue
 l 英語 Tuesday
 w 曜日(日曜0→土6) 2
 W その年の経過週(月曜開始) 28
●時間
 H 24時間単位 09
 G 24時間単位(先頭の0なし) 9
 h 12時間単位 09
 g 12時間単位(先頭の0なし) 9
 a 午前/午後(小文字) am
 A 午前/午後(大文字) AM
●分 
 i 分(2桁) 09
●秒
 s 秒(2桁) 09

 
 

 

この記事を読む

【PHP】確立を指定した抽選ロジック

PHP

今回は、確立を指定した抽選のコンテンツを作成したので、それの備忘録。
 

 

  function array_rand_weighted($entries){
   $sum  = array_sum($entries);
   $rand = rand(1, $sum);

   foreach($entries as $key => $weight){
     if (($sum -= $weight) < $rand) return $key;
     }
   }

  // 抽選候補となる配列
  // キーが要素で、値が確立になる。
  $entries = array(
   "1等"    => 5,
   "ハズレ"  => 95,
  );

  // 抽選(こんな感じで使用する)
  $result_key = array_rand_weighted($entries);
  if ($result_key == "1等") {
   echo '1等です。';
  } else {
   echo 'ハズレです。';
  }

 
array_sum($array)
・配列の値の合計を計算します。
 
round(A,B)
・整数A~Bの範囲で乱数を発生します。
 
foreach($entries as $key => $weight){
}
・連想配列を使用したforeachi
 $entries の連想配列。各配列を$keyで取り出し、その$keyに相当する値を$weightとして処理を繰り返す。
 
if (($sum -= $weight) < $rand) return $key;
・配列の合計値より、各配列の値を引いていって、乱数より小さい値になったときに、その配列の$keyを返す。
 

 

この記事を読む

【wordpress/SEO】投稿ページなどに、meta データ(description)を挿入する方法

wordpressの投稿ページなどに、個別に meta データの description を挿入できるように、
ダッシュボードの投稿ページにカスタムフィールドを設けて、そこで個別に設定できるようにする方法を紹介します。

同じ meta データの keyword について

現在、Google検索、yahoo検索(yahoo検索はGoogleと同じクローラーを使用している)では、meta データの keyword は対象外となっているため、meta データの keyword は記述しても意味がありません。一方、meta データの description は、現在でも Googleクローラーの対象になっていますので、SEO 対策としては有効と言われています。

 
■functions.php

add_action('admin_menu', 'add_custom_fields');
add_action('save_post', 'save_custom_fields');

function add_custom_fields() {
    add_meta_box( 'my_sectionid', 'カスタムフィールド', 'my_custom_fields', 'post');
    add_meta_box( 'my_sectionid', 'カスタムフィールド', 'my_custom_fields', 'page');
}

function my_custom_fields() {
    global $post;
    $description = get_post_meta($post->ID,'description',true);

    echo "<p>ページの説明(description)160文字以内<br>";
    echo "<input type='text' style='width: 600px;height: 40px;' name='description' value='" . esc_html($description) . "' maxlength='160' /></p>";
}

// カスタムフィールドの値を保存
function save_custom_fields( $post_id ) {

    if(!empty($_POST['description']))
        update_post_meta($post_id, 'description', $_POST['description'] );
    else delete_post_meta($post_id, 'description');

}

function my_description() {

// カスタムフィールドの値を読み込む
    $custom = get_post_custom();
    if(!empty( $custom['keywords'][0])) {
        $keywords = $custom['keywords'][0];
    }
    if(!empty( $custom['description'][0])) {
        $description = $custom['description'][0];
    }

    ?>
    <?php if(is_home()): // トップページ ?>
        <meta name='robots' content='index, follow' />
        <meta name='description' content='トップページに表示させるdescription' />
    <?php elseif(is_single()): // 記事ページ ?>
        <meta name='robots' content='index, follow' />
        <meta name='description' content='<?php echo $description ?>'>
    <?php elseif(is_page()): // 固定ページ ?>
        <meta name='robots' content='index, follow' />
        <meta name='description' content='<?php echo $description ?>'>
    <?php elseif (is_category()): // カテゴリーページ ?>
        <meta name='robots' content='index, follow' />
        <meta name='description' content='<?php single_cat_title(); ?>の記事一覧' />
    <?php elseif (is_tag()): // タグページ ?>
        <meta name='robots' content='noindex, follow' />
        <meta name='description' content='<?php single_tag_title(“”, true); ?>の記事一覧' />
    <?php elseif(is_404()): // 404ページ ?>
        <meta name='robots' content='noindex, follow' />
        <title><?php echo 'お探しのページが見つかりませんでした'; ?></title>
    <?php else: // その他ページ ?>
        <meta name='robots' content='noindex, follow' />
    <?php endif; ?>
<?php
}

各ページのテンプレートの head内、あるいは、header.php に下記記述を記載する。

  <?php my_description() ?>

 

 

この記事を読む

【WordPress】投稿ページの YouTube 全画面表示されないとき

投稿ページに iframe で YouTube を埋め込んだときに、全画面表示ができなかったので、それを解決した備忘録。
 
YouTube動画をフルスクリーンにしようとして、フルスクリーンボタンを押すと、下記のように表示されフルスクリーンが表示されない。

 
まず、YouTube の埋め込み動画を全画面表示を許可するためには、埋め込み iframe の属性に「allowfullscreen」属性が必要で、「allowfullscreen」属性がないと全画面表示は許可されないみたい。
 
そこで、コードを改めて見てみると「allowfullscreen」属性がないので、コレが原因かなと。(しかし、YouTubeで埋め込みコードを取得するとき、確か全画面表示を許可したんだけど…と思いつつ)
 
早速、コードを修正して iframe に「allowfullscreen」属性を追加してみる。
、、、が、やはり、全画面表示できない。。。 もう一度、コードを確認してみると、先ほど追加した「allowfullscreen」属性が消えている!
 
そういえば、WordPress の投稿は、登録してある属性しかダメということを思い出し、iframe の「allowfullscreen」属性を許可するように、下記コードを functions.php に記載する。
(投稿ページで iframe を書けるようにしたコード(こちらの投稿記事)に追加した。)

add_filter('content_save_pre','test_save_pre');

function test_save_pre($content){
	global $allowedposttags;

	// iframeとiframeで使える属性を指定する
        $allowedposttags['iframe']=array('class'=>array(),'src'=>array(),
            'width'=>array(),'height'=>array(),'frameborder'=>array(),
            'scrolling'=>array(),'marginheight'=>array(),
            'marginwidth'=>array(),'allowfullscreen' => array());

	return $content;
}

 
確認してみると、無事に全画面表示できるようになった。解決、解決。

この記事を読む
記事一覧に戻る