Bạn có thể thêm một plugin tùy chỉnh, vào WordPress và trình chỉnh sửa trực quan TinyMCE. Nguồn theo dõi là một ví dụ đơn giản hoạt động và thêm một chuỗi trước và sau tất cả shortcode.
Sử dụng
Shortcode sẽ tìm thấy thông qua regex, có liên quan nếu bạn cần nó cho các mã ngắn khác nhau và đánh dấu khác nhau về điều này. Kịch bản thêm nội dung tùy chỉnh vào shortcode, ở đây <b>FB-TEST
trước và sau thẻ đóng và nội dung. Bạn cũng có thể sử dụng các lớp đánh dấu, css để tạo khả năng hiển thị. Điều quan trọng là, bạn xóa nội dung này trên lưu bài đăng, được kích hoạt trong tập lệnh trên PostProcess
. Ở đây chạy tập lệnh và loại bỏ nội dung tùy chỉnh thông qua chức năng restoreShortcodes
.
Nhưng, hiện tại là đơn giản, có thể không hợp lệ cho mỗi yêu cầu. Có lẽ bạn nên lưu trữ shortcode trên init và khôi phục với biến được lưu trữ này.
Ảnh chụp màn hình
Xem ảnh chụp màn hình làm ví dụ để hiểu kết quả.
Nguồn
Nguồn cần cấu trúc thư mục này để sử dụng nó:
-- shortcode-replace
|--php file
|--assets
|-- js
|-- js file
Lúc đầu, một tệp php nhỏ, bao gồm nguồn dưới dạng plugin trong môi trường wp. Để nó trong thư mục chính của plugin shortcode-replace
.
<?php # -*- coding: utf-8 -*-
/**
* Plugin Name: Shortcode Replace
* Plugin URI:
* Description:
* Version: 0.0.1
* Text Domain:
* Domain Path: /languages
* License: MIT
* License URI:
*/
namespace FbShortcodeReplace;
if ( ! function_exists( 'add_action' ) ) {
exit();
}
if ( ! is_admin() ) {
return;
}
add_action( 'admin_enqueue_scripts', __NAMESPACE__ . '\initialize' );
function initialize( $page ) {
if ( 'post.php' === $page ) {
add_filter( 'mce_external_plugins', __NAMESPACE__ . '\add_tinymce_plugin' );
}
}
function add_tinymce_plugin( $plugins ) {
if ( ! is_array( $plugins ) ) {
$plugins = array();
}
$suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '.dev' : '';
$url = plugins_url( '/assets/js/fb_shortcode_replace.js', __FILE__ );
$plugins = array_merge( $plugins, array( 'fb_shortcode_replace' => $url ) );
return $plugins;
}
Tệp php này tải một javascript làm plugin trong trình chỉnh sửa trực quan. Plugin sẽ chỉ tải trên các trang quản trị, chỉ các trang có chuỗi post.php
- xem if ( 'post.php' === $page ) {
.
Nguồn theo dõi là tệp javascript, được đặt tên fb_shortcode_replace.js
. Để nó trong thư mục assets/js/
, bên trong thư mục plugin của plugin này.
tinymce.PluginManager.add( 'fb_shortcode_replace', function( editor ) {
var shortcode = /\[.+\]/g;
var additional_before = '<b>FB-TEST';
var additional_after = 'FB-TEST</b>';
function ifShortcode( content ) {
return content.search( /\[.+\]/ ) !== -1;
}
function replaceShortcodes( content ) {
return content.replace( shortcode, function( match ) {
return html( match );
} );
}
function restoreShortcodes( content ) {
content = content.replace( additional_before, '' );
content = content.replace( additional_after, '' );
return content;
}
function html( data ) {
console.log( data );
return additional_before + data + additional_after;
}
editor.on( 'BeforeSetContent', function( event ) {
// No shortcodes in content, return.
if ( ! ifShortcode( event.content ) ) {
return;
}
event.content = replaceShortcodes( event.content );
} );
editor.on( 'PostProcess', function( event ) {
if ( event.get ) {
event.content = restoreShortcodes( event.content );
}
} );
} );
Hữu ích
Gợi ý bổ sung
Plugin Raph chuyển đổi mã ngắn trong html để xem nó và đơn giản hóa để hiểu kết quả. Có lẽ nó cũng hữu ích trong bối cảnh này.
<code>
hoặc<pre>
các thẻ chắc chắn sẽ là trình giả lập.