Contact Form7 カスタム投稿タイプの記事タイトルを取得して送信する方法

Filed under: contactform7,functions.php — kdcs @ 22年7月26日 火曜日

Contact Form7のメールフォームを個別記事ページに掲載して記事タイトルを送信データに付加させたい場合、
[_post_title]というコードがあるが、カスタム投稿タイプでは使用できない。

カスタム投稿タイプでタイトルを付加させる方法
※コードは「post_title」

function.phpに以下記述

/* ---------------------------------------------------------------------------------------
   ◆◆◆ contactform7(個別記事用フォーム)にカスタム投稿タイプのタイトルを挿入する######
------------------------------------------------------------------------------------------*/
function set_post_title_to_cf7_tag( $tag ){
    if ( ! is_array( $tag ) ){
        return $tag;    
    }
 
    $name = $tag['name'];
    if( $name == 'post_title' ){
        $res_get_the_title = get_the_title();
        $tag['values'] = (array)$res_get_the_title;
    }
    return $tag;
}
add_filter( 'wpcf7_form_tag', 'set_post_title_to_cf7_tag', 11 );

Contact Form7の編集ページ、フォームに以下記述
非表示にする場合、hiddenを入れる

<p>[hidden post_title]</p>

Contact Form7の編集ページ、メールに「post_title」を記述する

WordPress 5.5から実装された「勝手に生成されるwp-sitemap.xml」の対処法

Filed under: .htaccess,functions.php,wordpress,WP迷惑機能 — kdcs @ 22年7月20日 水曜日

WordPress5.5から自動的にサイトマップが生成されるようになり迷惑。
wp-sitemap.xmlを無効化する方法とリダイレクトさせる方法

function.phpに記述
こちらを記述するとwp-sitemap.xmlが404エラーになる

add_filter( 'wp_sitemaps_enabled', '__return_false' );

完全にサイトマップ機能を無効化したい場合はこちらも記述
※2022.7.20現在 未検証

remove_action( 'init', 'wp_sitemaps_get_server' );

既存のサイトマップ(Googleに検出させたいサイトマップ)にリダイレクトさせる
/wp-sitemap.xml → /sitemap.xml

.htaccessに記述

Redirect 301 /wp-sitemap.xml https://example.com/sitemap.xml

WordPress ログイン画面のプライバシーポリシーへのリンクを非表示にする

Filed under: functions.php,wordpress — kdcs @ 22年7月19日 火曜日

WordPressのバージョン たぶん5.9以降

function.phpに記述

//ログイン画面の言語切り替えを非表示にする------------------------------------------------
function delete_privacy_policy_loginpage( $link, $privacy_policy_url ) {
    if ( 'wp-login.php' === $GLOBALS['pagenow'] ) {
        return null;
    }
}
add_filter( 'the_privacy_policy_link', 'delete_privacy_policy_loginpage', 10, 2 );

WordPress 管理者ユーザーを一覧から非表示にする

Filed under: functions.php,wordpress — kdcs @ 22年4月26日 火曜日

管理者以外、例えば編集者にユーザー編集権限を与えた場合、その編集者が管理者を編集(権限変更や削除)ができてしまうので管理者以外はユーザー一覧に管理者を表示させないようにする方法。

function.phpに以下記述 xxxxxxはユーザーネーム

//管理者ユーザーを管理者以外のユーザー一覧から非表示にする--------------------------------
add_action('pre_user_query','site_pre_user_query');
function site_pre_user_query($user_search) {
	global $current_user;
	$username = $current_user->user_login;
 
	if ($username == 'XXXXXX') {
	}
 
	else {
	global $wpdb;
    $user_search->query_where = str_replace('WHERE 1=1',
      "WHERE 1=1 AND {$wpdb->users}.user_login != 'XXXXXX'",$user_search->query_where);
  }
}

ユーザー一覧にはユーザー数が表示されるので管理者1名を引いた数を表示させる記述

//管理者以外のユーザー一覧からユーザー数(管理者)を1つ減らす-----------------------------
if (!current_user_can('administrator')) {
add_filter("views_users", "site_list_table_views");
function site_list_table_views($views){
   $users = count_users();
   $admins_num = $users['avail_roles']['administrator'] - 1;
   $all_num = $users['total_users'] - 1;
   $class_adm = ( strpos($views['administrator'], 'current') === false ) ? "" : "current";
   $class_all = ( strpos($views['all'], 'current') === false ) ? "" : "current";
   $views['administrator'] = '<a href="users.php?role=administrator" class="' . $class_adm . '">' . translate_user_role('Administrator') . ' <span class="count">(' . $admins_num . ')</span></a>';
   $views['all'] = '<a href="users.php" class="' . $class_all . '">' . __('All') . ' <span class="count">(' . $all_num . ')</span></a>';
   return $views;
  }
}

新規ユーザー追加時の権限グループ選択肢を制御する

Filed under: functions.php,wordpress — kdcs @ 22年4月26日 火曜日

通常、ユーザーの追加が行える権限があるのは管理者(administrator)だけだが、編集者(editor)などにユーザーを追加する権限を与えた場合、管理者ユーザーも作成できてしまう。

そこで、編集者に与えたユーザー追加権限には「管理者」など指定した権限を選択できないようにする。

以下、function.phpに記述
コメントアウトで選択肢を選べる
ユーザー追加時の権限制御 admin/user-new.php

//ユーザー追加時に「管理者・編集者・投稿者」を選択できないようにする---------------------
function remove_role_user_new() {
if (!current_user_can('administrator')) {
?><script type="text/javascript">
jQuery(document).ready(function($){
$("option[value='administrator'").remove();//管理者
$("option[value='editor'").remove();//編集者
//$("option[value='author'").remove();//投稿者
//$("option[value='contributor'").remove();//寄稿者
//$("option[value='subscriber'").remove();//購読者
});
</script><?php }
}
add_action( 'admin_head-user-new.php', 'remove_role_user_new' );

ユーザー編集時の権限制御 admin/user-edit.php

//ユーザー編集時に「管理者・編集者・投稿者・寄稿者」を選択できないようにする--------------
function remove_role_user_edit() {
if (!current_user_can('administrator')) {
?><script type="text/javascript">
jQuery(document).ready(function($){
$("option[value='administrator'").remove();//管理者
$("option[value='editor'").remove();//編集者
$("option[value='author'").remove();//投稿者
$("option[value='contributor'").remove();//寄稿者
//$("option[value='subscriber'").remove();//購読者
});
</script><?php }
}
add_action( 'admin_head-user-edit.php', 'remove_role_user_edit' );

ダッシュボードの一般設定でデフォルトの権限グループを制御したい場合

//新規ユーザーのデフォルト権限グループ「管理者・編集者」を選択できないようにする---------
function remove_role_options_general() {
?><script type="text/javascript">
jQuery(document).ready(function($){
$("option[value='administrator'").remove();//管理者
$("option[value='editor'").remove();//編集者
//$("option[value='author'").remove();//投稿者
//$("option[value='contributor'").remove();//寄稿者
//$("option[value='subscriber'").remove();//購読者
});
</script><?php }
add_action( 'admin_head-options-general.php', 'remove_role_options_general' );

サイト内検索

カテゴリー

最近の投稿

↑上に戻る