WordPress カスタム投稿タイプで「プレビュー」ボタンを無効にする

Filed under: functions.php,wordpress — kdcs @ 2023年4月21日 金曜日

WordPressでカスタム投稿タイプとアドバンスドカスタムフィールドを利用して、例えば広告バナー表示や特定のページに埋め込んだ内容などのコンテンツの更新を行う場合、管理者以外はメニューの「新規追加」や「編集・クイック編集・ゴミ箱へ移動」ほか「プレビュー」などを非表示にしておく方が都合がよいことがある。

以下はその方法。(カスタム投稿タイプはhogehoge)

ダッシュボード左側のメニューから管理者以外hogehogeの新規追加を無効にする

function remove_admin_menus() {
 
    // level10以外のユーザーの場合
    if (!current_user_can('level_10')) {
 
        global $menu;
        global $submenu;
 
        // unsetで非表示にするメニューを指定
        unset($menu[2]);  // ダッシュボード
//      unset($menu[5]);  // 投稿
        unset($menu[10]); // メディア
        unset($menu[20]); // 固定ページ
        unset($submenu['edit.php?post_type=page'][10]); //固定ページのサブメニュー
        unset($menu[25]); // コメント
        unset($menu[60]); // 外観
        unset($menu[65]); // プラグイン
        unset($menu[70]); // ユーザー
        unset($menu[75]); // ツール
        unset($menu[80]); // 設定
 remove_menu_page('wpcf7'); //コンタクトフォーム7
 remove_submenu_page( 'edit.php?post_type=hogehoge', 'post-new.php?post_type=hogehoge' ); //hogehogeの新規追加非表示
    }
}

編集画面側に表示される「新規追加」を非表示にする

function custom_edit_newpost_delete($hook) {
	if($hook == 'edit.php' || $hook == 'post.php'){

    $postType = get_post_type();
if ( !current_user_can( 'administrator' ) ) {
    if ( $postType == 'hogehoge' ) { //カスタム投稿スラッグがhogehogeなら非表示
        echo '<style>.wrap .wp-heading-inline + .page-title-action{display: none;}</style>';
	  }

	}
  }
}
add_action('admin_enqueue_scripts', 'custom_edit_newpost_delete');

編集画面の公開エリアにある「プレビュー」または「変更をプレビュー」を無効にするには、カスタム投稿タイプ作成時の設定で「publicly_queryable」をfalseにする。
以下参考

register_post_type( 'support', array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'support' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
) );

一覧の「編集・クイック編集・ゴミ箱へ移動・プレビュー」を非表示にする

function custom_action_row($actions, $post){
    
    $postType = get_post_type();
    if ( $postType == "recruit" ){ //カスタム投稿スラッグがrecruitなら非表示
       unset($actions['edit']); //編集
       unset($actions['inline hide-if-no-js']); //クイック編集
       unset($actions['trash']); //ゴミ箱
       unset($actions['view']); //プレビュー
    }

    return $actions;
}
add_filter('post_row_actions','custom_action_row', 10, 2);

フォーム入力例「placeholder 属性」へのスタイルシート適用

Filed under: contactform7,css — kdcs @ 2023年4月8日 土曜日

Contact Form 7で入力例としてplaceholder属性を付ける場合のコード
例として氏名を必須にし、入力例を「田中 太郎」にする

[text* your-name autocomplete:name placeholder "田中 太郎"]

これで出力されるhtml

<div id="entryForm">
<input size="40" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" autocomplete="name" aria-required="true" aria-invalid="false" placeholder="田中 太郎" value="" type="text" name="your-name" />
</div><!--/#entryForm-->

このinputタグ内のplaceholder属性にcssを適用する

#entryForm input::-webkit-input-placeholder {
    color: #aaa;
    font-size: 77%;
}
#entryForm input::-moz-placeholder {
    color: #aaa;
    font-size: 77%;
}
#entryForm input:-ms-input-placeholder {
    color: #aaa;
    font-size: 77%;
}

【注意】
このプレフィックスのついたcssをまとめて一括指定すると何故か適用されない

Contact Form 7 autop(自動挿入タグの無効化)

Filed under: contactform7,functions.php — kdcs @ 2023年4月8日 土曜日

Contact Form 7のバージョン5.7からpタグとbrタグが自動で挿入される
これを無効化する方法

wp-config.phpに記述する方法

define ('WPCF7_AUTOP', false);

functions.phpに記述する方法

add_filter('wpcf7_autop_or_not', 'wpcf7_autop_return_false');
function wpcf7_autop_return_false() {
  return false;
} 

WordPress プラグイン「MW WP Form」電話番号を半角入力しても半角エラー

Filed under: MW WP Form,wordpressプラグイン — kdcs @ 2023年4月5日 水曜日

WordPress プラグイン「MW WP Form」電話番号の入力を設定し、バリデーションに「電話番号と半角数字」を設定。
まず、全角数字で入力すると「電話番号の形式ではありません」と「半角数字で入力してください」のエラーが出る。
次に半角数字で入力すると「半角数字で入力してください」のエラーが出る。

ネット上に解決方法があったがプラグインのファイルを修正することになるのでバージョンアップ時に上書きされる。

以下、解決策
ファイル:wp-content\plugins\mw-wp-form\classes\validation-rules\class.numeric.php

        if ( preg_match( '/^[0-9]+$/', $value ) ) {
            return;
        }

この部分を

    if($name == "tel") {
      $val = $value;
      if (preg_match('/^[0-9]+-[0-9]+-[0-9]+/', $val)) {
        return;
      }
    } else {
      if (preg_match('/^[0-9]+$/', $value)) {
        return;
      }
    }

こう変える。
$nameとバリデーションルールを「tel」にする必要がある

WordPress プラグイン「MW WP Form」で生年月日3項目の一括バリデーション

Filed under: functions.php,MW WP Form,wordpressプラグイン — kdcs @ 2023年4月5日 水曜日

MW WP Formは国産プラグインでContact Form 7より柔軟性がある。(確認ページやサンクスページ、メールデータの保存など)

生年月日など入力項目を分割してバリデーションをかけると年、月、日にそれぞれエラーメッセージが出てしまうので、年月日に一括してバリデーションをかける方法。

[mwform_select name="birth-year" children=":---,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997" post_raw="true" show_error="false"]年 [mwform_select name="birth-month" children=":---,1,2,3,4,5,6,7,8,9,10,11,12" post_raw="true" show_error="false"]月 [mwform_select name="birth-date" children=":---,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31" post_raw="true" show_error="false"]日
[mwform_error keys="birth-year,birth-month,birth-date"]

それぞれのセレクトボックスのショートコードに「show_error=”false”」を入れる

functions.php

function entry_validation_rule( $Validation, $data) {
  $validation_message2 = '未入力項目があります。';

  if ( empty( $data['birth-year'] ) ) {
    $Validation->set_rule( 'birth-year', 'noempty', array( 'message' => $validation_message2 ) );
  } elseif ( empty( $data['birth-month'] ) ) {
    $Validation->set_rule( 'birth-month', 'noempty', array( 'message' => $validation_message2 ) );
  } elseif ( empty( $data['birth-date'] ) ) {
    $Validation->set_rule( 'birth-date', 'noempty', array( 'message' => $validation_message2 ) );
  }

  return $Validation;
}
add_filter( 'mwform_validation_mw-wp-form-5', 'entry_validation_rule', 10, 2 );

最後の行、mwform_validation_mw-wp-form-5の
5は、ショートコードの[mwform_formkey key=”5″]このkeyの数字

(続きを読む…)

サイト内検索

カテゴリー

最近の投稿

↑上に戻る