web-dev-qa-db-ja.com

投稿のHTML出力を制御する方法

あなたがすでに知っているように、あなたがTextモードですべてを書いたとしても、WordPressは投稿を操作します。 (改行を\r\nに置き換えたり、一重引用符を二重引用符に変換するなど)

混乱しないようにするにはこれが良いことですが、私の場合は、<code>タグと</code>タグの両方、および一部のHTMLを直接HTMLコードに入れたいと思います。

だから私は私がテキストモードで見たことを確かめたい(またはどういうわけかHTMLモードをインストールする)ので、それでは私が見ているものは私が手に入れたものです、HTMLに関して:)

たぶん私が欲しいものについてのより良い説明はこれです:

私が "新しい投稿を追加"ウィンドウに書いたものは正確に<div class='entry-content'></div>の間に表示されるものと同じであるべきです。

このための任意のヒント?

テーマを変更する必要がありますか?またはTinymce用のプラグイン?

pS:

データベースでは一重引用符をエスケープする必要があることは知っていますが、改行やHTMLタグなどは残しておきたいので、データベースに直接書き込む以外の方法があることを教えてください。

2
jeff

私は最善の解決策は、ユーザー - >あなたのプロフィール - >執筆時にビジュアルエディタを無効にすることから、ビジュアルエディタを無効にすることです。

1
jeff

get_user_meta()get_metadata() のラッパーです。ユーザーがRich Editorを使用できるかどうかが疑問に思われる場合は、その呼び出しで無効にすることができます。

<?php
/**
 * Plugin Name: (#116210) Disable RichEdit by User or Role
 * Author:      Franz Josef Kaiser <[email protected]>
 */
defined( 'ABSPATH' ) OR exit;

add_filter( 'get_user_metadata', 'wpse116210VisualEditorDisabled', 20, 4 );
function wpse116210VisualEditorDisabled( $enabled, $object_id, $meta_key, $single ) {
    if ( ! is_admin() )
        return $enabled;

    // Conditional switch for different post types
    if ( 'post' === get_current_screen()->post_type )
    {
        $user = wp_get_current_user();
        // Check here if you want *that* user/role to be enabled/disabled.
        $enabled = FALSE;
    }

    return $enabled;
}

別の方法としては、WP_Role#has_capチェックを使用することがあります(使用されている場合)。それは同様にフィルタを持っています:'role_has_cap'

<?php
/**
 * Plugin Name: (#116210) Disable RichEdit by Role
 * Author:      Franz Josef Kaiser <[email protected]>
 */
defined( 'ABSPATH' ) OR exit;

add_filter( 'role_has_cap', 'wpse116210RoleHasCap' );
function wpse116210RoleHasCap( $allCaps, $checkedCap, $roleName )
{
    $role = get_role( $roleName );
    // Do your check if you want to allow it. Return *boolean*.

    return $allCaps[ $checkedCap ];
}
0
kaiser

IIRCこれはユーザーのmeta/capsフィルターです。

<?php
/**
 * Plugin Name: (#116210) Disable RichEdit for some post types
 * Author:      Franz Josef Kaiser <[email protected]>
 */
defined( 'ABSPATH' ) OR exit;

add_filter( 'user_can_richedit', function( $enabled ) {
    if ( ! is_admin() )
        return $enabled;

    // Conditional switch for different post types
    // If you want to check against multiple post types, use in_array()
    return 'post' === get_current_screen()->post_type;
}

すべての投稿タイプでグローバルに無効にしたい場合は、次のショートカットを使用できます。

<?php
/**
 * Plugin Name: (#116210) Disable RichEdit for some post types
 * Author:      Franz Josef Kaiser <[email protected]>
 */
defined( 'ABSPATH' ) OR exit;
add_filter( 'user_can_richedit', '__return_false' );
0
kaiser