2

我遇到了 WordPress 元框的问题。实际上,我正在使用 WordPress Genesis 框架,在子主题中,我为我的客户创建了一些元框,以便在页面内容之前显示一些内容,但是在自定义元框中,我使用的是 wp-editor 并且它工作正常。但问题是,当我尝试在这个 wp-editor 中使用一些简码时,它不会向我显示任何内容,它只是按原样返回整个简码。

我正在使用https://github.com/jaredatch/Custom-Metaboxes-and-Fields-for-WordPress自定义元框。

我的代码在function.php文件中:

/* -------------------------------------------------------------------------- */
/* Setup Custom metaboxes                                                     */
/* -------------------------------------------------------------------------- */
add_action( 'init', 'be_initialize_cmb_meta_boxes', 9999 );

function be_initialize_cmb_meta_boxes() {
    if ( !class_exists( 'cmb_Meta_Box' ) ) {
        require_once( CHILD_DIR . '/lib/metabox/init.php' );
    }
}

add_filter( 'cmb_meta_boxes', 'cmb_sample_metaboxes' );

function cmb_sample_metaboxes( array $meta_boxes ) {

    // Start with an underscore to hide fields from custom fields list
    $prefix = '_cmb_';

    $meta_boxes[] = array(
        'id'         => 'text_content',
        'title'      => 'Text Content',
        'pages'      => array( 'page', ), // Post type
        'context'    => 'normal',
        'priority'   => 'high',
        'show_names' => true, // Show field names on the left
        'fields'     => array(
            array(
                'name' => 'Custom Content',
                'desc' => 'This is a title description',
                'id'   => $prefix . 'custom_content',
                'type' => 'title',
            ),  
            array(
                'name' => 'Tab Name',
                'desc' => 'Please descibe the tab name (required)',
                'id'   => $prefix . 'tab_name',
                'type' => 'text',
            ),
            array(
                'name'    => 'Test wysiwyg',
                'desc'    => 'field description (optional)',
                'id'      => $prefix . 'test_wysiwyg',
                'type'    => 'wysiwyg',
                'options' => array( 'textarea_rows' => 5, ),
            ),
        ),
    );

    return $meta_boxes;
}

我将page.php中的代码保存为:

add_action('genesis_before_loop', 'ehline_before_loop_content');

function ehline_before_loop_content() 
{
    echo genesis_get_custom_field( '_cmb_tab_name' );
    echo '<br />';
    echo genesis_get_custom_field( '_cmb_test_wysiwyg' );
}
genesis();

但是当我在这个元框中使用简码时,它会返回类似的东西

[wptabtitle] Tab 01[/wptabtitle] [wptabcontent]test[/wptabcontent]

请任何人告诉我如何让它在 wp-editor 中使用短代码。

4

1 回答 1

1

您需要调用do_shortcode()自定义字段的内容。更新后的代码如下所示:

add_action('genesis_before_loop', 'ehline_before_loop_content');

function ehline_before_loop_content() 
{
    echo do_shortcode( genesis_get_custom_field( '_cmb_tab_name' ) );
    echo '<br />';
    echo do_shortcode( genesis_get_custom_field( '_cmb_test_wysiwyg' ) );
}
genesis();

此外,这不会添加您通常会在帖子内容中看到的自动段落。你可以做两件事:

echo apply_filters( 'the_content', genesis_get_custom_field( '_cmb_tab_name' ) );

或者

echo wpautop( do_shortcode( genesis_get_custom_field( '_cmb_tab_name' ) ) );

理论上第一个应该更好,但有时您可能会从与the_content过滤器挂钩的函数中获得额外的输出。

于 2012-12-03T12:01:16.263 回答