WordPress5.9で追加されたログイン画面の言語切り替えを非表示にする
function.phpに以下記述
//ログイン画面の言語切り替えを非表示にする------------------------------------------------
add_filter('login_display_language_dropdown', '__return_false');
WordPress5.9で追加されたログイン画面の言語切り替えを非表示にする
function.phpに以下記述
//ログイン画面の言語切り替えを非表示にする------------------------------------------------
add_filter('login_display_language_dropdown', '__return_false');
Themes My Loginが有料化されたので簡単な会員サイトをプラグイン無しで構築する方法
デフォルトのページを会員用にし、カスタム投稿タイプで会員・非会員どちらもアクセスできる
コンテンツを作成する。
※会員のアカウント(ID password)は事務局が作成
会員がアクセスするページはすべてログイン必須にする
テンプレート(home.php category.php archive.php single.php)に以下を記述
<?php if (!is_user_logged_in()){auth_redirect();} ?>
会員の権限は「購読者」とし、ログイン先は会員ページ(home.php)とする
会員ページのスラッグは「member」で表示設定にて「投稿ページ」に指定する
function.phpに以下を記述
/* ---------------------------------------------------------------------------------------
◆◆◆ 会員(購読者)ログイン時のリダイレクト先設定 ####################################
------------------------------------------------------------------------------------------*/
add_action( 'auth_redirect', 'subscriber_go_to_home' );
function subscriber_go_to_home( $user_id ) {
$user = get_userdata( $user_id );
if ( !$user->has_cap( 'edit_posts' ) ) {
$url = site_url('/member/');
wp_redirect( $url );
exit();
}
}
WordPress 5.5から追加されたwp-sitemap.xmlはurlの情報しか無い
更新日時などの情報が付与されないのでxmlのsitemapプラグインを使用している場合は、自動で作成されるwp-sitemap.xmlを無効化する。
以下をfunction.phpに記述
※アクセスするとトップページにリダイレクト
remove_action( 'init', 'wp_sitemaps_get_server' );
wp-sitemap.xmlにアクセスさせたくない場合(こちらは使う意味無いと思う)
※アクセスすると404エラーになる
add_filter( 'wp_sitemaps_enabled', '__return_false' );
wordpress5.7.3で投稿記事の最初の画像のサムネイルを取得して表示させる動作が不安定になり、表示出来たりできなかったりしたため、過去のコードを見直した。
preg_match_allの記述を変更
変更前
preg_match_all('/<img.+?class=".+?wp-image-(.+).*?".*?>/i', $post->post_content, $matches);
変更後
preg_match_all( '/<img.+class=[\'"].*wp-image-([0-9]+).*[\'"].*>/i', $post->post_content, $matches );
function.phpにこちらを記述する(全体)
記事内に画像が無い場合の代替画像「default1.png」
/* ---------------------------------------------------------------------------------------
◆◆◆ 投稿記事の最初の画像のサムネイル ?php echo my_first_image_thumb(); ? で表示 ####
------------------------------------------------------------------------------------------*/
function my_first_image_thumb(){
global $post, $posts;
$img_url = '';
//デフォルト画像の設定
$defaute_url = get_stylesheet_directory_uri(). '/images/default1.png';
//最初の画像を取得してIDを取得
preg_match_all( '/<img.+class=[\'"].*wp-image-([0-9]+).*[\'"].*>/i', $post->post_content, $matches );
if(isset($matches[1][0])){
$img_id = ($matches[1][0]);
}
//最初の画像があれば分岐
if(!empty($img_id)){
//最初の画像IDからサムネイルのパスを取得してセット
$img_url = my_wp_get_attachment_medium_url($img_id);
} else {
//最初の画像がない場合、デフォルト画像のパスをセット
$img_url = $defaute_url;
}
return $img_url;
}
//画像IDからサムネイルサイズのパスを取得(画像サイズ変更可能)
//画像サイズ (thumbnail, medium, large, full or custom size)
function my_wp_get_attachment_medium_url( $id ) {
$thumbnail_array = image_downsize( $id, 'thumbnail' );
$thumbnail_path = $thumbnail_array[0];
return $thumbnail_path;
}
ページ内の表示させたい部分に以下を記述
<img src="<?php echo my_first_image_thumb(); ?/>">
メールフォームの送信ボタンをクリックした時、正常に送信されたら送信完了ページを表示したい場合
function.phpに記述する方法
$contact = 'contact';
$thanks = 'thanks';
//お問い合わせフォームの送信後にサンクスページへ飛ばす
add_action( 'wp_footer', 'redirect_thanks_page' );
function redirect_thanks_page() {
global $contact;
global $thanks;
if( is_page($contact) ) {
?>
<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
location = '<?php echo home_url('/'.$thanks); ?>'; // 遷移先のURL
}, false );
</script>
<?php }
}
html内に記述する方法
<script>document.addEventListener('wpcf7mailsent',function(event){ location='//example.com/thanks/'; },false);</script>