以正确的方式创建自定义[Sourecode]快捷代码?

时间:2013-09-28 作者:its_me

我想在WordPress上分享帖子中的代码,这是一件非常痛苦的事情,因为所有的HTML转义都需要处理。因此,我计划在custom shortcode 调用[sourcecode], 如下所示,并让它自动转义特殊字符。

[sourcecode]
<?php

    // Some code here.

?>
[/sourcecode]
代码,这是相关函数(在我的主题的functions.php中)的样子:

/**
 * Functionality to set up custom shortcode correctly.
 *
 * This function is attached to the \'the_content\' filter hook.
 */
add_filter( \'the_content\', \'run_bbcodes\', 7 );
function run_bbcodes( $content ) {
    global $shortcode_tags;

    $orig_shortcode_tags = $shortcode_tags;
    $shortcode_tags = array();

    // New shortcodes below
    add_shortcode( \'sourcecode\', \'bbcode_code\' );

    $content = do_shortcode( $content );
    $shortcode_tags = $orig_shortcode_tags;

    return $content;
}

/**
 * Add Custom shortcode functions below
 *
 * This function is attached to the \'sourcecode\' shortcode hook.
 */
function bbcode_code( $atts, $content = null ) {

    // Ensure contents of a <pre>...</pre> HTML block aren\'t converted into paragraphs or line-breaks
    $content = clean_pre( $content );

    $content = str_replace(

        // Replace these special characters...
        array( \'&\', \'\\0\', \'<\', \'>\', \'\\\'\', \'"\', \'/\', \'[\', \']\' ),

        // ...with the HTML entities below, respectively
        array( \'&amp;\', \'&#92;&#48;\', \'&lt;\', \'&gt;\', \'&apos;\', \'&quot;\', \'&#47;\', \'&#91;\', \'&#93;\' ),

        $content
    );

    return \'<pre><code>\' . trim( $content ) . \'</code></pre>\';
}

/**
 * Related sourcecode worth reading:
 *
 * https://bitbucket.org/cbavota/syntax-highlighter-plugin/src
 *
 * https://github.com/mdawaffe/Highlight.js-for-WordPress/blob/master/highlight-js.php
 *
 * https://github.com/fracek/highlight-wp/blob/master/highlight.php
 *
 * http://plugins.svn.wordpress.org/syntaxhighlighter/trunk/
 *
 * http://blog.webspace.jp/235
 *
 * http://core.trac.wordpress.org/browser/trunk/src/wp-includes/shortcodes.php
 */
既然解释已经过时了。。。

我还缺什么吗?

例如,直到我读到SyntaxHighlighter Evolved 插件,我不知道\\0 还需要替换为&#92;&#48; “围绕KSE工作”(这对我来说还不够清楚)。

除了逃避特殊角色之外,还有什么我可能遗漏的吗?我这样做对吗?

(如果有人能看看this file (SyntaxHighlighter进化插件的PHP源代码)并查看是否可以找到我需要实现的东西。不过我已经尽力了。)


PS: 为什么不使用插件本身呢?首先,我不希望语法如此突出显示;我想知道它的功能是否可以轻松实现。

2 个回复
最合适的回答,由SO网友:brasofilo 整理而成

你问的是X,但我会用Y. 嗯,有太多的异常需要处理才能授予另一个解决方案。

SyntaxHighlighter的发展有以下几点Pro Tip (强,大写,原文):

TIP: 如果不希望代码被破坏,请不要使用可视化编辑器。TinyMCE将;“清理”;您的HTML。

不仅如此,插件和主题混为一谈是很常见的the_content. 粗略(且完全不科学)衡量:50个插件中出现10次;50个主题内出现15次。

另一个Pro Tip:

enter image description here

建议的解决方案

1) 要处理代码,我认为它要么是编辑帖子屏幕中的自定义字段/框,要么是帖子和;“私人”;将存储代码的自定义帖子类型。我更喜欢后者。步骤:

将可嵌入代码粘贴到<textarea> 使用渲染edit_form_after_title使用esc_html 在后端显示,以及\'<pre class="pretty">\'.htmlentities($code).</pre> 在前端2) 要处理语法突出显示,读者可以选择其首选方法。Google Prettify实际上是两行代码,并将一个类添加到<pre> 标签仅将脚本排队when the shortcode is present.

示例插件

Custom post typeenter image description here

Post post type
enter image description here

以下是一个框架,仅概述了逻辑。下面是一些好东西的链接:
Working skeleton at GistFull plugin at GitHub

<?php
/**
 * Plugin Name: Skeleton for the plugin Snippets Shortcode
 * Plugin URI: https://gist.github.com/brasofilo/6804951
 */

/**
 * Based on Plugin Class Demo
 * https://gist.github.com/toscho/3804204
 */
add_action(
    \'plugins_loaded\',
    array ( B5F_Snippets_Shortcode::get_instance(), \'plugin_setup\' )
);

/**
 * Main class
 *
 * Fires all classes
 * Handles save_post action for other classes
 */
class B5F_Snippets_Shortcode {
    protected static $instance = NULL;
    public $post_type = \'snippet\';    
    public function plugin_setup() {
        new B5F_SS_Cpt();
        new B5F_SS_Posts_Pages_Metabox();
        new B5F_SS_Shortcode();
        add_action( \'save_post\', array( $this, \'_save_post\' ), 10, 2 );
    }
} 

/**
 * Register Snippet post type and render Textarea Field after the Title
 *
 * CPT is hierarchical 
 * Custom Metabox for CPT is left empty, can be used as Language Selector
 * Uses save_post for CPT 
 */
class B5F_SS_Cpt {
    public function __construct() {
        add_action( \'init\', array( $this, \'_cpt\' ) );
        add_action( \'edit_form_after_title\', array( $this, \'input_text_area\' ) );
    }
}

/**
 * Metabox to select the Snippet and to display the correspondent Shortcode
 *
 * Displayed in Posts and Pages post types
 * Add jQuery to listen to the Snippets Dropdown changes and update the sample Text Field
 * Uses save_post for other Post Types 
 */
class B5F_SS_Posts_Pages_Metabox {
    public function __construct() {
        add_action( \'add_meta_boxes\', array( $this, \'_meta_boxes\' ) );
    }
}

/**
 * Snippets Shortcode
 *
 * First gets the Snippet Post ID, then its associated Meta Data, 
 * finally filters the string with http://php.net/manual/en/function.htmlentities.php 
 *
 * Uses Google Code Prettify
 * https://code.google.com/p/google-code-prettify/
 */
class B5F_SS_Shortcode {
    public function __construct() {
        add_shortcode( \'snippet\', array( $this, \'_shortcode\' ) );
    }
}

SO网友:its_me

以防万一Rodolfo\'s answer 不清楚,以下是(我认为)他的建议-顺便说一下,这是一个很好的主意:

创建一个名为Snippets的自定义post类型,我们将在其post中存储代码片段。

我们将使用supports 中的参数register_post_type 对我们有利。我们不希望编辑屏幕上的内容编辑器用于自定义帖子类型,因为我们将在自定义元框中存储内容(本质上是一个自定义字段),所以我们将隐藏它;以及其他不必要的字段,因为这将是一种自定义帖子类型。

下面是一个示例,让您了解如何做到这一点:

/*
 * Register Custom Post Types
 * DON\'T FORGET TO FLUSH PERMALINKS
 *
 * http://justintadlock.com/archives/2013/09/13/register-post-type-cheat-sheet
 * https://gist.github.com/justintadlock/6552000
 * http://core.trac.wordpress.org/browser/trunk/src/wp-includes/post.php
 */
add_action( \'init\', \'itsme_register_post_types\' );
function itsme_register_post_types() {

    // Post Type: Snippets
    register_post_type(

        // Keeping it unique so that it never conflicts with a plugin or theme
        \'itsme_snippet\',

        array(
            \'description\'         => \'Code snippets for sharing in posts.\',
            \'public\'              => false, // NOTE!
            \'publicly_queryable\'  => false, // NOTE!
            \'exclude_from_search\' => true, // NOTE!
            \'show_in_nav_menus\'   => false,
            \'show_ui\'             => true,
            \'show_in_menu\'        => true,
            \'show_in_admin_bar\'   => false,
            \'menu_position\'       => 5, // Your choice.
            \'menu_icon\'           => null,
            \'can_export\'          => false,
            \'delete_with_user\'    => false,
            \'hierarchical\'        => false,
            \'taxonomies\'          => array(),
            \'has_archive\'         => false, // NOTE!
            \'query_var\'           => false, // NOTE!
            \'capability_type\'     => \'post\',
            \'rewrite\' => array(
                \'slug\'            => \'snippets\',
                \'with_front\'      => false,
                \'pages\'           => false,
                \'feeds\'           => false, // NOTE!
            ),

            // IMPORTANT! At least make sure that the \'editor\' (Content Editor) is hidden - i.e. remove it from the array.
            \'supports\'             => array( \'title\', \'revisions\', ),

            \'labels\' => array(
                \'name\'               => __( \'Snippets\' ),
                \'singular_name\'      => __( \'Snippet\' ),
                \'menu_name\'          => __( \'Snippets\' ),
                \'name_admin_bar\'     => __( \'Snippets\' ),
                \'add_new\'            => __( \'Add New\' ),
                \'add_new_item\'       => __( \'Add New Snippet\' ),
                \'edit_item\'          => __( \'Edit Snippet\' ),
                \'new_item\'           => __( \'New Snippet\' ),
                \'view_item\'          => __( \'View Snippet\' ),
                \'search_items\'       => __( \'Search Snippets\' ),
                \'not_found\'          => __( \'No Snippets found\' ),
                \'not_found_in_trash\' => __( \'No Snippets found in trash\' ),
                \'all_items\'          => __( \'All Snippets\' ),
                \'parent_item\'        => __( \'Parent Snippet\' ),
                \'parent_item_colon\'  => __( \'Parent Snippet:\' ),
                \'archive_title\'      => __( \'Snippets\' ),
            )
        )
    );

}
Related Links: (因为我没有在代码中给出任何解释。)

  • http://codex.wordpress.org/Post_Types

  • http://codex.wordpress.org/Function_Reference/register_post_type

  • http://core.trac.wordpress.org/browser/trunk/src/wp-includes/post.php

    如果你不知道how to code one, 您可以使用以下插件轻松创建一个Advanced Custom Fields. 下面是一个屏幕截图,只为您提供一个想法:

    Create a custom meta box using Advanced Custom Fields plugin

    创建一个自定义短代码,该代码接受代码段帖子的id,并在<pre> 标签;当然,所有HTML特殊字符都已正确转义。

    以下是一个好主意的示例:

    /*
     * Custom Shortcode: Snippet
     * USAGE: [snippet id="188"], where id = Snippet (CPT) post\'s ID
     *
     * http://wpquestions.com/question/showChrono?id=8901
     */
    add_shortcode( \'snippet\', \'bbcode_snippet\' );
    function bbcode_snippet( $atts ) {
        extract( shortcode_atts( array(
            \'id\' => null,
        ), $atts ) );
    
        $post = get_post( $id );
        $content = $post->post_content;
        $content = trim( htmlspecialchars( clean_pre( $content ) ) );
    
        return \'<pre><code>\' . $content . \'</code></pre>\';
    }
    
    Related Links:

  • 要稍微简化一些,请创建一个自定义元框,其中显示要使用的快捷码(例如。[snippet id="120"]) 在自定义帖子类型(代码段)的编辑屏幕上。因此,一旦发布了代码片段,就可以复制短代码,以便在帖子中嵌入代码。

    add_action( \'add_meta_boxes\', \'itsme_custom_meta_boxes\' );
    function itsme_custom_meta_boxes() {
        add_meta_box(
    
            // HTML \'id\' attribute of the edit screen section (AKA meta box)
            \'itsme-snippet-shortcode-box\',
    
            // Title of the meta box, visible to user
            esc_html__( \'Snippet Shortcode\' ),
    
            // Callback function
            \'itsme_snippet_shortcode_box\',
    
            // Custom post type on whose edit screen to show meta box
            \'aahank_vault\',
    
            // The part of edit screen where the meta box should be shown
            \'side\',
    
            // Priority within the context where the meta box should show
            \'high\'
    
        );
    }
    
    // Function to display the meta box
    function itsme_snippet_shortcode_box() {
    
        global $post;
        $snippet_id = $post->ID;
        echo \'<textarea rows="1" readonly="readonly" placeholder="Publish post first!" onclick="this.focus();this.select();">[snippet id="\' . $snippet_id . \'"]</textarea>\';
    
    }
    
    这就是我们所需要的。语法突出显示和其他内容都是额外的,所以我不想深入了解更多细节。

    Footnotes:

    <就像鲁道夫说的那样,插件和主题很容易搞乱the_content. 因为我们想保持代码片段不变(除非WE 我们使用一个自定义字段来存储数据,即代码片段。

    此外,默认情况下,WordPress上有很多过滤器the_content, 使做我们想做的事情变得非常复杂。相反,使用自定义字段可以使整个过程更加简单和直接。

  • Ideas:

    <您可以使用名为language 或者组织自定义帖子类型的帖子,甚至用它来语法突出显示代码

结束

相关推荐

将[xcode]foo[/xcode]转换为<pre>foo</pre>

我正在使用将vBulletin内容转换为WPCrayon syntax highlighter. 转换内容的[xcode]foo[/xcode] 到<pre class=\"lang:default decode:true \">foo</pre> 蜡笔?我看到关于Crayon legacy tags conversion 但是缺少屏幕截图,我不知道如何为蜡笔启用“遗留标签”。

以正确的方式创建自定义[Sourecode]快捷代码? - 小码农CODE - 行之有效找到问题解决它

以正确的方式创建自定义[Sourecode]快捷代码?

时间:2013-09-28 作者:its_me

我想在WordPress上分享帖子中的代码,这是一件非常痛苦的事情,因为所有的HTML转义都需要处理。因此,我计划在custom shortcode 调用[sourcecode], 如下所示,并让它自动转义特殊字符。

[sourcecode]
<?php

    // Some code here.

?>
[/sourcecode]
代码,这是相关函数(在我的主题的functions.php中)的样子:

/**
 * Functionality to set up custom shortcode correctly.
 *
 * This function is attached to the \'the_content\' filter hook.
 */
add_filter( \'the_content\', \'run_bbcodes\', 7 );
function run_bbcodes( $content ) {
    global $shortcode_tags;

    $orig_shortcode_tags = $shortcode_tags;
    $shortcode_tags = array();

    // New shortcodes below
    add_shortcode( \'sourcecode\', \'bbcode_code\' );

    $content = do_shortcode( $content );
    $shortcode_tags = $orig_shortcode_tags;

    return $content;
}

/**
 * Add Custom shortcode functions below
 *
 * This function is attached to the \'sourcecode\' shortcode hook.
 */
function bbcode_code( $atts, $content = null ) {

    // Ensure contents of a <pre>...</pre> HTML block aren\'t converted into paragraphs or line-breaks
    $content = clean_pre( $content );

    $content = str_replace(

        // Replace these special characters...
        array( \'&\', \'\\0\', \'<\', \'>\', \'\\\'\', \'"\', \'/\', \'[\', \']\' ),

        // ...with the HTML entities below, respectively
        array( \'&amp;\', \'&#92;&#48;\', \'&lt;\', \'&gt;\', \'&apos;\', \'&quot;\', \'&#47;\', \'&#91;\', \'&#93;\' ),

        $content
    );

    return \'<pre><code>\' . trim( $content ) . \'</code></pre>\';
}

/**
 * Related sourcecode worth reading:
 *
 * https://bitbucket.org/cbavota/syntax-highlighter-plugin/src
 *
 * https://github.com/mdawaffe/Highlight.js-for-WordPress/blob/master/highlight-js.php
 *
 * https://github.com/fracek/highlight-wp/blob/master/highlight.php
 *
 * http://plugins.svn.wordpress.org/syntaxhighlighter/trunk/
 *
 * http://blog.webspace.jp/235
 *
 * http://core.trac.wordpress.org/browser/trunk/src/wp-includes/shortcodes.php
 */
既然解释已经过时了。。。

我还缺什么吗?

例如,直到我读到SyntaxHighlighter Evolved 插件,我不知道\\0 还需要替换为&#92;&#48; “围绕KSE工作”(这对我来说还不够清楚)。

除了逃避特殊角色之外,还有什么我可能遗漏的吗?我这样做对吗?

(如果有人能看看this file (SyntaxHighlighter进化插件的PHP源代码)并查看是否可以找到我需要实现的东西。不过我已经尽力了。)


PS: 为什么不使用插件本身呢?首先,我不希望语法如此突出显示;我想知道它的功能是否可以轻松实现。

2 个回复
最合适的回答,由SO网友:brasofilo 整理而成

你问的是X,但我会用Y. 嗯,有太多的异常需要处理才能授予另一个解决方案。

SyntaxHighlighter的发展有以下几点Pro Tip (强,大写,原文):

TIP: 如果不希望代码被破坏,请不要使用可视化编辑器。TinyMCE将;“清理”;您的HTML。

不仅如此,插件和主题混为一谈是很常见的the_content. 粗略(且完全不科学)衡量:50个插件中出现10次;50个主题内出现15次。

另一个Pro Tip:

enter image description here

建议的解决方案

1) 要处理代码,我认为它要么是编辑帖子屏幕中的自定义字段/框,要么是帖子和;“私人”;将存储代码的自定义帖子类型。我更喜欢后者。步骤:

将可嵌入代码粘贴到<textarea> 使用渲染edit_form_after_title使用esc_html 在后端显示,以及\'<pre class="pretty">\'.htmlentities($code).</pre> 在前端2) 要处理语法突出显示,读者可以选择其首选方法。Google Prettify实际上是两行代码,并将一个类添加到<pre> 标签仅将脚本排队when the shortcode is present.

示例插件

Custom post typeenter image description here

Post post type
enter image description here

以下是一个框架,仅概述了逻辑。下面是一些好东西的链接:
Working skeleton at GistFull plugin at GitHub

<?php
/**
 * Plugin Name: Skeleton for the plugin Snippets Shortcode
 * Plugin URI: https://gist.github.com/brasofilo/6804951
 */

/**
 * Based on Plugin Class Demo
 * https://gist.github.com/toscho/3804204
 */
add_action(
    \'plugins_loaded\',
    array ( B5F_Snippets_Shortcode::get_instance(), \'plugin_setup\' )
);

/**
 * Main class
 *
 * Fires all classes
 * Handles save_post action for other classes
 */
class B5F_Snippets_Shortcode {
    protected static $instance = NULL;
    public $post_type = \'snippet\';    
    public function plugin_setup() {
        new B5F_SS_Cpt();
        new B5F_SS_Posts_Pages_Metabox();
        new B5F_SS_Shortcode();
        add_action( \'save_post\', array( $this, \'_save_post\' ), 10, 2 );
    }
} 

/**
 * Register Snippet post type and render Textarea Field after the Title
 *
 * CPT is hierarchical 
 * Custom Metabox for CPT is left empty, can be used as Language Selector
 * Uses save_post for CPT 
 */
class B5F_SS_Cpt {
    public function __construct() {
        add_action( \'init\', array( $this, \'_cpt\' ) );
        add_action( \'edit_form_after_title\', array( $this, \'input_text_area\' ) );
    }
}

/**
 * Metabox to select the Snippet and to display the correspondent Shortcode
 *
 * Displayed in Posts and Pages post types
 * Add jQuery to listen to the Snippets Dropdown changes and update the sample Text Field
 * Uses save_post for other Post Types 
 */
class B5F_SS_Posts_Pages_Metabox {
    public function __construct() {
        add_action( \'add_meta_boxes\', array( $this, \'_meta_boxes\' ) );
    }
}

/**
 * Snippets Shortcode
 *
 * First gets the Snippet Post ID, then its associated Meta Data, 
 * finally filters the string with http://php.net/manual/en/function.htmlentities.php 
 *
 * Uses Google Code Prettify
 * https://code.google.com/p/google-code-prettify/
 */
class B5F_SS_Shortcode {
    public function __construct() {
        add_shortcode( \'snippet\', array( $this, \'_shortcode\' ) );
    }
}

SO网友:its_me

以防万一Rodolfo\'s answer 不清楚,以下是(我认为)他的建议-顺便说一下,这是一个很好的主意:

创建一个名为Snippets的自定义post类型,我们将在其post中存储代码片段。

我们将使用supports 中的参数register_post_type 对我们有利。我们不希望编辑屏幕上的内容编辑器用于自定义帖子类型,因为我们将在自定义元框中存储内容(本质上是一个自定义字段),所以我们将隐藏它;以及其他不必要的字段,因为这将是一种自定义帖子类型。

下面是一个示例,让您了解如何做到这一点:

/*
 * Register Custom Post Types
 * DON\'T FORGET TO FLUSH PERMALINKS
 *
 * http://justintadlock.com/archives/2013/09/13/register-post-type-cheat-sheet
 * https://gist.github.com/justintadlock/6552000
 * http://core.trac.wordpress.org/browser/trunk/src/wp-includes/post.php
 */
add_action( \'init\', \'itsme_register_post_types\' );
function itsme_register_post_types() {

    // Post Type: Snippets
    register_post_type(

        // Keeping it unique so that it never conflicts with a plugin or theme
        \'itsme_snippet\',

        array(
            \'description\'         => \'Code snippets for sharing in posts.\',
            \'public\'              => false, // NOTE!
            \'publicly_queryable\'  => false, // NOTE!
            \'exclude_from_search\' => true, // NOTE!
            \'show_in_nav_menus\'   => false,
            \'show_ui\'             => true,
            \'show_in_menu\'        => true,
            \'show_in_admin_bar\'   => false,
            \'menu_position\'       => 5, // Your choice.
            \'menu_icon\'           => null,
            \'can_export\'          => false,
            \'delete_with_user\'    => false,
            \'hierarchical\'        => false,
            \'taxonomies\'          => array(),
            \'has_archive\'         => false, // NOTE!
            \'query_var\'           => false, // NOTE!
            \'capability_type\'     => \'post\',
            \'rewrite\' => array(
                \'slug\'            => \'snippets\',
                \'with_front\'      => false,
                \'pages\'           => false,
                \'feeds\'           => false, // NOTE!
            ),

            // IMPORTANT! At least make sure that the \'editor\' (Content Editor) is hidden - i.e. remove it from the array.
            \'supports\'             => array( \'title\', \'revisions\', ),

            \'labels\' => array(
                \'name\'               => __( \'Snippets\' ),
                \'singular_name\'      => __( \'Snippet\' ),
                \'menu_name\'          => __( \'Snippets\' ),
                \'name_admin_bar\'     => __( \'Snippets\' ),
                \'add_new\'            => __( \'Add New\' ),
                \'add_new_item\'       => __( \'Add New Snippet\' ),
                \'edit_item\'          => __( \'Edit Snippet\' ),
                \'new_item\'           => __( \'New Snippet\' ),
                \'view_item\'          => __( \'View Snippet\' ),
                \'search_items\'       => __( \'Search Snippets\' ),
                \'not_found\'          => __( \'No Snippets found\' ),
                \'not_found_in_trash\' => __( \'No Snippets found in trash\' ),
                \'all_items\'          => __( \'All Snippets\' ),
                \'parent_item\'        => __( \'Parent Snippet\' ),
                \'parent_item_colon\'  => __( \'Parent Snippet:\' ),
                \'archive_title\'      => __( \'Snippets\' ),
            )
        )
    );

}
Related Links: (因为我没有在代码中给出任何解释。)

  • http://codex.wordpress.org/Post_Types

  • http://codex.wordpress.org/Function_Reference/register_post_type

  • http://core.trac.wordpress.org/browser/trunk/src/wp-includes/post.php

    如果你不知道how to code one, 您可以使用以下插件轻松创建一个Advanced Custom Fields. 下面是一个屏幕截图,只为您提供一个想法:

    Create a custom meta box using Advanced Custom Fields plugin

    创建一个自定义短代码,该代码接受代码段帖子的id,并在<pre> 标签;当然,所有HTML特殊字符都已正确转义。

    以下是一个好主意的示例:

    /*
     * Custom Shortcode: Snippet
     * USAGE: [snippet id="188"], where id = Snippet (CPT) post\'s ID
     *
     * http://wpquestions.com/question/showChrono?id=8901
     */
    add_shortcode( \'snippet\', \'bbcode_snippet\' );
    function bbcode_snippet( $atts ) {
        extract( shortcode_atts( array(
            \'id\' => null,
        ), $atts ) );
    
        $post = get_post( $id );
        $content = $post->post_content;
        $content = trim( htmlspecialchars( clean_pre( $content ) ) );
    
        return \'<pre><code>\' . $content . \'</code></pre>\';
    }
    
    Related Links:

  • 要稍微简化一些,请创建一个自定义元框,其中显示要使用的快捷码(例如。[snippet id="120"]) 在自定义帖子类型(代码段)的编辑屏幕上。因此,一旦发布了代码片段,就可以复制短代码,以便在帖子中嵌入代码。

    add_action( \'add_meta_boxes\', \'itsme_custom_meta_boxes\' );
    function itsme_custom_meta_boxes() {
        add_meta_box(
    
            // HTML \'id\' attribute of the edit screen section (AKA meta box)
            \'itsme-snippet-shortcode-box\',
    
            // Title of the meta box, visible to user
            esc_html__( \'Snippet Shortcode\' ),
    
            // Callback function
            \'itsme_snippet_shortcode_box\',
    
            // Custom post type on whose edit screen to show meta box
            \'aahank_vault\',
    
            // The part of edit screen where the meta box should be shown
            \'side\',
    
            // Priority within the context where the meta box should show
            \'high\'
    
        );
    }
    
    // Function to display the meta box
    function itsme_snippet_shortcode_box() {
    
        global $post;
        $snippet_id = $post->ID;
        echo \'<textarea rows="1" readonly="readonly" placeholder="Publish post first!" onclick="this.focus();this.select();">[snippet id="\' . $snippet_id . \'"]</textarea>\';
    
    }
    
    这就是我们所需要的。语法突出显示和其他内容都是额外的,所以我不想深入了解更多细节。

    Footnotes:

    <就像鲁道夫说的那样,插件和主题很容易搞乱the_content. 因为我们想保持代码片段不变(除非WE 我们使用一个自定义字段来存储数据,即代码片段。

    此外,默认情况下,WordPress上有很多过滤器the_content, 使做我们想做的事情变得非常复杂。相反,使用自定义字段可以使整个过程更加简单和直接。

  • Ideas:

    <您可以使用名为language 或者组织自定义帖子类型的帖子,甚至用它来语法突出显示代码

相关推荐

Where is this inline CSS code

CSS代码在哪里?我是说margin-top: 46px !important!;我需要把它改成1px 去掉上边距。但我没有在任何主题的文件中找到它。Note: I have searched the texts in all files using FileSeek Pro. 但什么也没发现。(即使Firefox中有Inspect元素)