Snooze

autumnをスペルミスしたままエンターx2してしまいました。

function.phpの記述

<?php 

/*--------------------------------------------------------------------------------------------------
  初期設定
  ページ引用
  ページネーション
  検索
--------------------------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------------------------
  初期設定
--------------------------------------------------------------------------------------------------*/
//不要なヘッダーの記述を削除
remove_action('wp_head','wp_generator'); //使用しているWordPressのバージョンの表示を削除
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head'); //ページ間の関係を示すrel=”prev”とrel=”next”の表示を削除
remove_action('wp_head', 'rsd_link'); //ブログ編集ツールから記事を投稿するための記述を削除
remove_action('wp_head', 'wlwmanifest_link'); //ブログ編集ツールから記事を投稿するための記述を削除

//アップデートの数値を消す
add_action('admin_menu', 'remove_counts');
function remove_counts(){
global $menu,$submenu;
$menu[65][0] = 'プラグイン';
$submenu['index.php'][10][0] = 'Updates';
}
add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) ); //アップグレード勧告を非表示
remove_action( 'wp_version_check', 'wp_version_check' ); // 本体のアップデート通知を非表示
remove_action( 'admin_init', '_maybe_update_core' ); // 本体のアップデート通知を非表示

//ログイン画面
function login_css() {
 echo '<link rel="stylesheet" type="text/css" href="'.get_bloginfo("stylesheet_directory").'/login.css">';
}
add_action('login_head', 'login_css'); 

function custom_login_logo_url() {
    return get_bloginfo( 'url' );
}
add_filter( 'login_headerurl', 'custom_login_logo_url' );

//投稿タイトルに英数以外が入っていたら投稿IDに置き換える
function auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
 if ( preg_match( '/(%[0-9a-f]{2})+/', $slug ) ) {
   $slug = utf8_uri_encode( $post_type ) . '-' . $post_ID;
 }
 return $slug;
}
add_filter( 'wp_unique_post_slug', 'auto_post_slug', 10, 4  );

// ビジュアルエディタ用CSS
add_editor_style('editor-style.css');
function custom_editor_settings( $initArray ) {
    $initArray['body_class'] = 'editor-area';
    $initArray['theme_advanced_blockformats'] = 'p,h3,h4,h5,h6';
    return $initArray;
}
add_filter( 'tiny_mce_before_init', 'custom_editor_settings' );

//添付ファイルのページの選択肢を消去
function media_script_buffer_start() {ob_start();}add_action( 'post-upload-ui', 'media_script_buffer_start' ); function media_script_buffer_get() {    $scripts = ob_get_clean();    $scripts = preg_replace( '#<option value="post">.*?</option>#s', '', $scripts );    echo $scripts;}add_action( 'print_media_templates', 'media_script_buffer_get' );

//絵文字削除
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles', 10 );

//ブルートフォース攻撃対策(idの解析対策)
add_action('init', 'disable_author_archive');
function disable_author_archive() {
    if( $_GET['author'] || preg_match('#^/author/.+#', $_SERVER['REQUEST_URI']) ){
        wp_redirect( home_url() );
        exit;
    }
}

//-------------------------------------------------

/*--------------------------------------------------------------------------------------------------
  ページ引用
--------------------------------------------------------------------------------------------------*/
function include_post_func($atts) {
  extract(shortcode_atts(array(
    'id' => '',
  ), $atts));

  $post_id = get_post ( $id );
  $content = $post_id->post_content;

  return $content;
}

add_shortcode('include-post', 'include_post_func');


/*--------------------------------------------------------------------------------------------------
  ページネーション
--------------------------------------------------------------------------------------------------*/
function pagination($pages = '', $range = 2){ 
  $showitems = ($range * 2)+1; 
  global $paged;
  if(empty($paged)) $paged = 1;
    if($pages == ''){
      global $wp_query;
      $pages = $wp_query->max_num_pages;
      if(!$pages){
        $pages = 1;
      }
  }  
  if(1 != $pages){
    echo "<div class=\"pager_wrap\"><ul class=\"pager\">";
    if($paged > 1 && $showitems < $pages) echo "<li><a href='".get_pagenum_link($paged - 1)."'>&laquo;&nbsp;前へ</a>";
    for ($i=1; $i <= $pages; $i++){
      if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )){
        echo ($paged == $i)? "<li class=\"active\">".$i."</li>":"<li><a href='".get_pagenum_link($i)."'>".$i."</a></li>";
      }
    }
    if ($paged < $pages && $showitems < $pages) echo "<li><a href=\"".get_pagenum_link($paged + 1)."\">次へ&nbsp;&raquo;</a></li>"; 
    echo "</ul></div>\n";
  }
}


/*--------------------------------------------------------------------------------------------------
  検索
--------------------------------------------------------------------------------------------------*/
function empty_search_redirect( $wp_query ) {
    if ( $wp_query->is_main_query() && $wp_query->is_search && ! $wp_query->is_admin ) {
        $s = $wp_query->get( 's' );
        $s = trim( $s );
        if ( empty( $s ) ) {
            wp_safe_redirect( home_url('/') );
            exit;
        }
    }
}
add_action( 'parse_query', 'empty_search_redirect' );

?>

Googleにインデックスさせない!

WordPressのテストページに「インデックスさせない」設定を怠っていたため、
テストページめちゃめちゃ公開される事件が発生しました。
以後、このような事態を防ぐため、テストページには以下の設定を施します。

WordPress側で設定

設定 → 表示設定 → 「検索エンジンがサイトをインデックスしないようにする」にチェック
多分これで大丈夫なんですが、念の為に以下も設定します

robots.txtを作成

存在は知っていましたが、特に触れずにきたrobots.txt
これに以下を記述します。

User-agent: *
Disallow: /

User-Agentクローラーの種類を指定するらしいです。(例: Google Chrome)今回は全てを指定するので * としました。
Disallow:クロールを拒否するディレクトリを指定するらしいです。/hoge/とか/hoge/index.htmlとか。今回は全てを拒否したいので / としました。

これをドキュメントルート(/publicなど)に設置すれば、完了です。

さらに

当事件がトラウマになりそうな(なった)ので、さらにインデックスされないようにします。
正直しなくて全く構いません。

metaタグを設定

ヘッダーに

<meta name="robots" content="noindex,nofollow">

これで一安心

やっとわかった@mixin

使いどころがイマイチ分からなかったけど、リファクタリングしていて今更やっと理解できた。

@mixin

@mixin btn-color($color_a,$color_b) {
  background-color:$color_a;
  color: $color_b;
  &:hover {
    color:$color_a;
    border:solid 2px $color_b;
  }
}

@include

.btn-red {
  @include btn-color(#F00,#FFF);
}

吐き出されるcss

.btn-red {
  background-color: #F00;
  color: #FFF;
}
.btn-red:hover {
  color: #F00;
  border: solid 2px #FFF;
}

PCとiPadのレイアウトを同じにする

なぜ?

スマホとPCだけで手一杯。
タブレットのレイアウトなんか作ってらんない!

やり方

タブレットで見たときにviewportを削除すればよいだけの話。

JavaScript

viewportを記述しているところに以下を置換

  <script type="text/javascript">
    if ((navigator.userAgent.indexOf('iPhone') > 0) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0) {
      document.write('<meta name="viewport" content="width=device-width">');
    }else{
      document.write('');
    }
  </script>

userAgentでユーザーがどんな媒体でアクセスしているか取得できるらしいです。

以上

【WordPress】サイトマップをGoogle Search Consoleに登録してインデックスしてもらう

Google XML Sitemaps

ここからダウンロード

Google XML Sitemapsをセットアップ

基本的にそんないじらなくてよいような気がします。

投稿の優先順位
投稿の優先順位
Change Frequencies
Change Frequencies
上記2つは設定した方が良いと思う。
Change Frequenciesは見てほしいページほど期間を短く。

Google Search Console

登録

ここ
ログインして、[プロパティを追加]

Search Console 管理画面
Search Console 管理画面
URLを入れる
プロパティを追加
プロパティを追加
その後、以下の画面に遷移するので、[別の方法]の[HTMLタグ]を選択。
表示されたタグを</head>直前に記述する。
別の方法→HTMLタグ
別の方法→HTMLタグ

サイトマップの追加

[サイトマップの追加/テスト]ボタンをクリック

サイトマップの追加
サイトマップの追加
設定→XML Sitemap で上の方にある”sitemap.xml”をコピーして貼り付け。
sitemap.xmlを貼り付け
sitemap.xmlを貼り付け
以上。

Google XML Sitemapsのver4.0.0以上はsitemap.xmlじゃなくて
/index.php?xml_sitemap=params=じゃないとダメ説ありますが、
ちょっと時間おいて確認してみます。

 

追記 (2018/07/13)
ちゃんとインデックスしてくれてます。

【WordPress】記事に連番を付ける

降順

ループ外の上の方に

<?php $post_counter = 1; ?>

ループ内の出力したい場所に

<?php print "$post_counter"; ?>

ループ内の下の方に

<?php $post_counter++; ?>

  

または

function.php

<?php
  function Counter(){
    global $wp_query;
    return $wp_query->current_post+1;
  } 
?>

出力したい場所に

<?php echo Counter(); ?>