bbpressのメールアドレス任意やログイン機能の設定方法

専用プラグインを作成する方法

WordPressの「plugins」フォルダの中に「empty-anonymous-bbpress」フォルダを作り、その中に作成した「empty-anonymous-bbpress.php」ファイルを入れてください。

empty-anonymous-bbpress.php

<?php

/*
Plugin Name: empty-anonymous-bbpress
Description: bbpressのコメント投稿の名前とメールアドレスを任意にするプラグイン
Version: 1.0
*/

add_action( 'init', array( 'WPSE_Empty_Anonymous_Replies', 'init' ) );

class WPSE_Empty_Anonymous_Replies
{
        static protected $name  = 'nobody';
        static protected $email = 'nobody@example.com';

        static public function init()
        {
            add_filter( 'bbp_filter_anonymous_post_data',
                         array( __CLASS__, 'bbp_filter_anonymous_post_data' ),
                         11, 2 );
            add_filter( 'bbp_pre_anonymous_post_author_name',
                         array( __CLASS__,  'bbp_pre_anonymous_post_author_name' ) );
            add_filter( 'bbp_pre_anonymous_post_author_email',
                         array( __CLASS__, 'bbp_pre_anonymous_post_author_email' ) );
        }

        static public function bbp_filter_anonymous_post_data( $retval, $r )
        {
            if( self::$name === $r['bbp_anonymous_name']
                && self::$email === $r['bbp_anonymous_email'] )
            {
                // reset the input to skip writing cookies
                $retval = array();

                // trick to activate the IP flood check
                $retval['bbp_anonymous_flood_check'] = '1';
            }
            return $retval;
        }

        static public function bbp_pre_anonymous_post_author_name( $name )
        {
            remove_filter( current_filter(), array( __CLASS__, __FUNCTION__ ) );
            if( empty( $name ) )
                $name = self::$name;

            return $name;
        }

        static public function bbp_pre_anonymous_post_author_email( $email )
        {
            remove_filter( current_filter(), array( __CLASS__, __FUNCTION__ ) );
            if( empty( $email ) )
                $email = self::$email;

            return $email;
        }
}

このプラグインでは必須条件を解除するだけで、「名前」「メールアドレス」欄の表示は消えません。そのため、入力項目自体を非表示にしたい方は、直接phpから「名前」欄などを削除するか、cssで非表示にして対応してください。

次のコードをstyle.cssに記述します。

/* メールアドレスを非表示 */
fieldset.bbp-form fieldset.bbp-form p:nth-child(3) {
	display: none;
}
/* ウェブサイトを非表示 */
fieldset.bbp-form fieldset.bbp-form p:nth-child(4) {
	display: none;
}

WordPressでセキュリティ対策「Invisible reCaptcha」を導入・設定する

GoogleでreCaptchaのサイト登録を行い、「Site Key」と「Secret key」を入手。
プラグイン「Invisible reCaptcha for WordPress」を追加して、情報設定する。

Google reCaptcha v3に対応している(2019/2/5時点)
問い合わせフォームの定番「Contact Forms7」にも対応してるので便利。

詳細


ただbbPressには対応してないので別途「bbPress No CAPTCHA reCAPTCHA」等を入れる必要あり。
ただこちらはreCaptcha v2じゃないとダメ(2019/2/5時点)

 
動作確認でログアウトしてログインしようとすると、プラグインの干渉かログインできなくなることあります。

その場合はftp経由でプラグインのフォルダ名変えて無効化すれば復帰できます。

wordpressで自動更新ONにする方法

「function.php」に対して以下のように記述します。

//プラグインの自動更新を有効化
add_filter( 'auto_update_plugin', '__return_true' );
//テーマの自動更新を有効化
add_filter( 'auto_update_theme', '__return_true' );
//メジャーアップグレードの自動更新を有効化
add_filter( 'allow_major_auto_core_updates', '__return_true' );

wordpressで画像遅延読み込みプラグイン「Lazy Load」 の利用方法 あと モバイルとGooglebot対策

プラグインを追加する時「Lazy Load」で検索すると
似たようなのがいろいろ出てくるけど「Lazy Load」を選択すること!
f:id:shikaku:20181016112257p:plain

追加したら有効化するだけなので導入は簡単。

しかしPCだと問題なくてもスマフォなどのモバイルだと画像読み込みが遅かったりタイミングが合わなくて読み込み失敗することがあるので、以下のようにプラグインに手を加えてモバイルは無効にするといい。

ついでにGoogleBotと相性悪いEdgeも無効にしよう。

プラグイン編集から「Lazy Load」を選んで読み込んで、
50行当たりの

// Don't lazyload for feeds, previews, mobile
if( is_feed() || is_preview() )
	return $content;

// Don't lazyload for feeds, previews, mobile
if( is_feed() || is_preview() || wp_is_mobile() || stripos($_SERVER['HTTP_USER_AGENT'], 'Googlebot')  || stripos($_SERVER['HTTP_USER_AGENT'], 'Edge') )
	return $content;

に差し替える。

wordpressのアップデートで「サーバー接続中にエラーが発生しました。設定を確認してください。」と表示される時の対策

  • wp-config.phpに1行加える
    • これがメジャーだけどセキュリティてきにどうかなという感じ
define('FS_METHOD','direct');
  • chownでWordPressファイルのオーナーを変更する
  • フィルターフック『filesystem_method』を使う