カスタム投稿タイプの編集でadvanced custom fields入力フィールドの幅を調整するcss

Filed under: css,functions.php — kdcs @ 25年5月15日 木曜日

WordPressでadvanced custom fieldsを使う場合、投稿編集画面に表示される入力フィールドの幅が100%指定で見た目が悪い。
この入力フィールドの幅をcssでカスタマイズする方法。

advanced custom fieldsのバージョンは6.3
カスタマイズ用のcssファイルを作成し、functions.phpで特定の投稿ポストの編集時に読み込ませるcssを指定する。

以下は特定のカスタム投稿タイプ用にcssフォルダ内にadmin-style.cssを作成し「your_custom_post_type」にカスタム投稿タイプを指定としている。
functions.php

function custom_admin_styles() {
    global $post_type;
    if ($post_type === 'your_custom_post_type') { // カスタム投稿タイプを指定
        wp_enqueue_style('custom-admin-css', get_template_directory_uri() . '/css/admin-style.css');
    }
}
add_action('admin_enqueue_scripts', 'custom_admin_styles');

admin-style.cssの記述
入力フィールドのdata-nameにフィールド名が入っているのでそれぞれ入力し、widthを!important指定する

/* inputの場合 */
div[data-name="フィールド名"] input {
  width: 300px !important;
}
/* selectの場合 */
div[data-name="フィールド名"] select {
  width: 300px !important;
}

cssファイルを作らずにfunctions.phpだけで行う方法

function custom_admin_css() {
    global $post_type;
    if ($post_type === 'your_custom_post_type') {
        echo '<style>
            #poststuff .acf-field { background-color: #f9f9f9; padding: 10px; }
            #post-body-content { max-width: 800px; }
        </style>';
    }
}
add_action('admin_head', 'custom_admin_css');

(続きを読む…)

wordpressで管理者以外カスタム投稿のメニューやサブメニューを非表示にする

Filed under: functions.php — kdcs @ 25年5月10日 土曜日

管理者以外はカスタム投稿タイプのサブメニューを非表示にしたい場合(新規投稿など出来なくする)

例:カスタム投稿タイプのスラッグは「hogehoge」でメニューはコメントアウトで表示させ、サブメニューを非表示にする記述

functions.php

// カスタム投稿タイプ「広告バナー」のサブメニューを非表示にする(管理者以外) ------------
function remove_custom_post_type_submenu() {
    if (!current_user_can('manage_options')) { // 管理者以外
//      remove_menu_page('edit.php?post_type=hogehoge'); // カスタム投稿タイプのメニューを削除
        remove_submenu_page('edit.php?post_type=hogehoge', 'post-new.php?post_type=hogehoge'); // 新規追加サブメニューを削除
    }
}
add_action('admin_menu', 'remove_custom_post_type_submenu', 100);

その他、全体的に管理者以外、使用しないメニューを非表示にする記述に追加でカスタム投稿タイプのメニューの非表示も行える

例:広告バナー(advertise)と商品管理(items)のメニュー非表示の記述を最下部に入れる

functions.php

// 使用しないメニューを非表示にする ------------------------------------------------------
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=advertise', 'post-new.php?post_type=advertise' ); //広告バナー新規作成
// remove_menu_page('edit.php?post_type=items', 'edit-tags.php?taxonomy=items_category&post_type=items'); //商品管理 カスタム投稿 タクソノミー
    }
}
add_action('admin_menu', 'remove_admin_menus');

ContactForm7のお問い合わせでURL入力を禁止にする方法

Filed under: contactform7,functions.php — kdcs @ 25年3月21日 金曜日

バリデーションを設定する

※お問い合わせ内容がテキストエリア[your-message*]と必須になっている場合(*が付いている)
「wpcf7_validate_textarea*」こちらにも*を付けることによって指定できる。
未入力の場合は指定したエラーメッセージ、例えば「必須項目に入力してください。」、URLを入力した場合「URLの入力はできません」というエラーメッセージを出す。
URLはhttps、httpどちらもエラーになる。

functions.php

add_filter('wpcf7_validate_textarea*', 'custom_validate_no_urls', 20, 2);

function custom_validate_no_urls($result, $tag) {
    $name = $tag->name;
    $value = isset($_POST[$name]) ? $_POST[$name] : '';

    if (preg_match('/https?:\/\/[^\s]+/', $value)) {
        $result->invalidate($tag, 'URLの入力はできません');
    }
    return $result;
}

【未検証】Contact Form 7でURLを入力するとエラーメッセージを出す

Filed under: contactform7,functions.php — kdcs @ 25年3月7日 金曜日

お問い合わせ内容の入力にURLが含まれる場合はエラーメッセージを出す。

functions.php

function wpcf7_validate_custom($result, $tag) {
    $value = esc_attr($_POST['your-message']);
    if (!empty($value)) {
        if (preg_match('/https?:\/\/[\w\/:%#\$&\?\(\)~\.=\+\-]+/', $value)) {
            $result->invalidate($tag, 'URLは入力できません');
        }
    }
    return $result;
}
add_filter('wpcf7_validate_textarea', 'wpcf7_validate_custom', 10, 2);

WordPressの集中執筆モードをデフォルトでOFFにする方法

Filed under: functions.php,wordpress — kdcs @ 25年2月28日 金曜日

投稿記事を書く時、通常の運用では集中執筆モードがデフォルトでオンになっており、表示オプションで集中執筆モードのチェックを外してオフにしても次にログインするとオンに戻ってしまう。
これをデフォルトではオフの状態にする方法。

functions.php
その1(こちらの方が記述がシンプル)
このコードは、エディターの自動拡張を無効にします。

function disable_editor_expand() {
    if ( is_admin() ) {
        wp_add_inline_script(
            'wp-blocks',
            'wp.data.dispatch("core/edit-post").removeEditorPanel("editor-post-publish-panel");'
        );
    }
}
add_action('admin_enqueue_scripts', 'disable_editor_expand');

その2(ログインするたびにオフにする記述)

/* ---------------------------------------------------------------------------------------
   ◆◆◆ 集中執筆モードをデフォルトでOFFにする ###########################################
------------------------------------------------------------------------------------------*/
function do_disable_editor_expand( $user_id ) {
    global $wpdb;
    $meta_key = $wpdb->prefix . 'user-settings';
    $_prev_user_settings = get_user_meta( $user_id, $meta_key, true );
    $_user_settings = explode( '&', $_prev_user_settings );
    $_is_override = false;

    foreach( $_user_settings as $_i => $_buff ) {
        list( $_key, $_val ) = explode( '=', $_buff );
        if ( 'editor_expand' === $_key ) {
            $_val = 'off';
            $_is_override = true;
        }
        $_user_settings[$_i] = $_key . '=' . $_val;
    }

    if ( ! $_is_override ) {
        $_user_settings[] = 'editor_expand=off';
    }

    update_user_meta( $user_id, $meta_key, implode( '&', $_user_settings ), $_prev_user_settings );
}

function custom_login_redirect( $redirect_to, $requested_redirect_to, $user ) {
    if ( ! is_wp_error( $user ) ) {
        global $user;
        if ( isset( $user->ID ) ) {
            do_disable_editor_expand( $user->ID );
        }
    }
    return $redirect_to;
}
add_filter( 'login_redirect', 'custom_login_redirect', 10, 3 );

function custom_user_register( $user_id ) {
    do_disable_editor_expand( $user_id );
}
add_action( 'user_register', 'custom_user_register' );

サイト内検索

カテゴリー

最近の投稿

↑上に戻る