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' );

WordPress内jQueryのバージョン情報

Filed under: JavaScript,wordpress,未分類 — kdcs @ 24年9月17日 火曜日

WordPressとjQueryのバージョン
※基本的にテーマをカスタマイズしているのでWordPress内部のjQueryは使用しない。

jQueryは公式からダウンロードするかcdnjsやgoogleなどから取得する
【cdnjs】
jQueryはこちら
jQuery-migrateはこちら

WordPress バージョン jQuery バージョン migrate リリース日
6.4 3.7.1 3.4.1 2023/11/07
6.3 3.7.0 未調査 2023/08/08
6.2 3.6.4 未調査 2023/03/29
6.1 3.6.1 未調査 2022/11/01
5.8 3.6.0 未調査 2021/07/20
5.6 3.5.1 未調査 2020/12/08
4.5 1.12.4 未調査 2016/04/12
4.3 1.11.3 未調査 2015/08/18
4.2 1.11.2 未調査 2015/08/23
4.0 1.11.1 未調査 2014/09/04
3.9 1.11.0 未調査 2014/04/16

WordPress「post_per_page」で取得数が指定できない場合の対処

Filed under: php,wordpress — kdcs @ 24年7月5日 金曜日

通常のnew WP_Query内にpost_per_pageで取得するpost数を指定してもダッシュボード>設定>表示設定で指定した表示数になってしまうので以下の記述で対応。

<?php
$query = new WP_Query(
    $args = array(
        'post_type' => 'post',
        'post_per_page' => 3,
    )
);
$query->post_count = 3;
if ( $query->post_count > count( $query->posts ) ) :
	$query->post_count = count( $query->posts );
endif; ?>

<?php if($query -> have_posts()): while($query -> have_posts()): $query -> the_post(); ?>
// ループさせる内容
<?php else : ?>
// 記事が無い場合の記述
<?php endif; wp_reset_postdata(); ?>

WordPress記事へのInstagram投稿の埋め込みjs

Filed under: wordpress — kdcs @ 23年9月4日 月曜日

Instagramの投稿画像をWordPress記事内に「埋め込みコード」を利用して貼り付けることができるが、このコードにはjavascriptも含まれる。WordPressでは管理者または編集者以外は記事にjavascriptを貼り付けることができない仕様になっているため、ユーザー権限が「投稿者」の場合、記事内のjavascriptは削除されてしまう。

権限をカスタマイズすることによってこの問題は解決できるが、セキュリティーリスクが高くなってしまう。

そこでInstagramの埋め込みコードにあるjavascriptをfooterに記述して使えるようにしておく。
記事ページ以外は関係ないので条件分岐でsingleだけにしておく。

<?php if ( is_single() ) : ?>
<script async src="//www.instagram.com/embed.js"></script>
<?php endif; ?>

特定のカスタム投稿記事に適用する場合
※例:イベントページ(スラッグ = event)

<?php if ( is_singular('event')): ?>
<script async src="//www.instagram.com/embed.js"></script>
<?php endif; ?>

複数のカスタム投稿記事に適用する場合

<?php if ( is_singular( array('event','xxxx')): ?>

投稿者が作成する記事内にjavascriptが使用できるようにする

Filed under: functions.php,wordpress — kdcs @ 23年9月4日 月曜日

WordPressのデフォルトでは管理者と編集者以外、記事内にjavascriptを使うことができない。
※入力しても強制削除される

権限のカスタマイズでjavascriptが入力できるようにする
※投稿者のユーザー情報が漏れるとセキュリティーリスクが伴う

functions.phpに記述

function add_theme_caps(){
    $role = get_role( 'author' );
    $role->add_cap( 'unfiltered_html' );
}
add_action( 'admin_init', 'add_theme_caps' );

get_roleで指定できる権限グループは以下になります。

管理者 : administrator
編集者 : editor
投稿者 : author
寄稿者 : contributor
購読者 : subscriber

サイト内検索

カテゴリー

最近の投稿

↑上に戻る