やわらかしかっけい

なんでもすぐに忘れてしまう自分のために

ベーシック認証によるアクセス制限

.htaccessの中身の書き方

特定のファイルに制限

<Files ファイル名.php>
AuthType Basic
AuthName "Input your ID and Password."
AuthUserFile /任意の場所/.htpasswd
require valid-user
</Files>

その.htaccessがあるフォルダごと制限

AuthType Basic
AuthName "Input your ID and Password."
AuthUserFile /任意の場所/.htpasswd
require valid-user

.htpasswdの書き方

user1:passxxxxxxxxxxxxxxx
user2:passxxxxxxxxxxxxxxx

という感じで改行とコロンで区切って書く。変換はどうにかうまいことやる

IPアドレスでの制限

wp-admin内に置く.htaccess

Order deny,allow
Deny from all 00.000.00.000

    Satisfy Any
    Order allow,deny
    Allow from all
    Deny from none

pre_get_postsで気をつけること

ホーム画面に吐き出される記事一覧を、あるカテゴリーの記事に絞りたかった。

こういう時のための「pre_get_posts」だと思ったので、

嬉々として利用。

悪い例

functions.php

<?php
// homeの記事一覧をカテゴリID「2」の記事のみに限定
function change_posts_category($query) {
 if ( is_admin() ){
     return;
 }
 if( $query->is_home() ){
     $query->set(  'cat','2'  );
     return;
 }
}
add_action( 'pre_get_posts', 'change_posts_category' );
?>

珍事発生

上記コードをfunctions.phpに書いて、

いざサイトを見てみたところ、

記事のカテゴリによる絞り込みはできていたが

ナビメニューが消えた。

忽然と、消えてしまった。

どのページを見ても、

<nav>
 </nav>

という感じで、メニューの中身がごっそり 無い。

原因

pre_get_posts を使用する際に、

「管理画面とメインクエリに干渉しないようにする」

という回避コードを書く必要があるのだが、

これを

「今回はトップページのループをいじるわけだから、(?)
 メインクエリへの干渉を避ける必要はないだろ〜」

と、勝手に回避コードを省略してしまったのが敗因。

メインクエリのなんたるかを、まったくわかってなかった。

メインクエリがナビメニューにも関わっているなんて、

おら、知らなかっただ・・・・。

正解

<?php
//  homeの記事一覧をカテゴリID「2」の記事のみに限定
function change_posts_category($query) {
 if ( is_admin() || ! $query->is_main_query() ){
     return;
 }
 if( $query->is_home() ){
     $query->set(  'cat','2'  );
     return;
 }
}
add_action( 'pre_get_posts', 'change_posts_category' );
?>

参考

emiac-works.com

親切にも「必須」って書いてあるんだから、
勝手に削ったりしちゃダメ。

WordPressの投稿画面(ビジュアルエディタ)をカスタマイズ

ビジュアルエディタ(TinyMCE)の、
太字やら色々なボタンをカスタマイズしたい。

まずは不要なものを消しましょう

functions.php

<?php
//ビジュアルエディタいらないボタンを削除
//一段目
function remove_tinymce_buttons($buttons){
      $remove = array(
      	'blockquote', //引用
      	'strikethrough', //打ち消し線
      	'wp_adv' //ツールバー切り替え(二段目以下を展開)
      );
      return array_diff($buttons, $remove);
}
add_filter('mce_buttons','remove_tinymce_buttons');
//二段目
function remove_tinymce_buttons_2($buttons){
      $remove = array(
	'strikethrough', // 打ち消し
    'hr',            // 横ライン
    'forecolor',     // テキスト色
    'pastetext',     // テキストとしてペースト
    'removeformat',  // 書式設定をクリア
    'charmap',       // 特殊文字
    'outdent',       // インデントを減らす
    'indent',        // インデントを増やす
    'undo',          // 取り消し
    'redo',          // やり直し
    'wp_help',		// キーボードショートカット
    'alignjustify',		//両端揃え
    'underline',		//下線
    'styleselect'		//スタイルセレクタ(※後述)
      );
      return array_diff($buttons, $remove);
}
add_filter('mce_buttons_2','remove_tinymce_buttons_2');
?>

任意の機能を追加

<?php
// ビジュアルエディタ2段目にフォントサイズセレクタ追加
function add_mce_buttons( $buttons ) {
  $add_buttons = array(
  	'fontsizeselect'
  );
  return array_merge( $buttons, $add_buttons );
}
add_filter( 'mce_buttons_2', 'add_mce_buttons' );
?>

フォーマット選択の中身を任意のものに変更

<?php
add_filter( 'tiny_mce_before_init', 'custom_tiny_mce_formats' );
function custom_tiny_mce_formats( $settings ){
  $settings[ 'block_formats' ] = '段落=p;見出し1=h2;見出し2=h3;見出し3=h4;';
  return $settings;
}
?>

なぜか二段目の「Styleselect」がどうしても消えてくれなかったので、力技

<?php
//スタイルセレクタ消去
function wp_custom_admin_css() {
    echo '<style>div#mceu_14,button#mceu_14-open{display:none !important;}</style>';
}
add_action( 'admin_head', 'wp_custom_admin_css', 100);
?>