Formatting <code>?

时间:2011-04-19 作者:Wordpressor

我在主题中显示代码块时遇到严重问题。

我想显示如下内容:

<something>
     <something-else>
          Content
     </something-else>
</something>
它在任何地方都可以正常工作,但在代码标记内这样做:

<code>
    <something>
         <something-else>
              Content
         </something-else>
    </something>
</code>
显示代码块,如下所示:

<something>
<something-else>
Content
</something-else>
</something>
并将代码的CSS设置为:

white-space: pre-wrap;
产生混淆:

<something>
</br>
   <something-else>
</br>
      Content
</br>
   </something-else>
</br>
</something>
几乎完美,但这些是从哪里来的?

此外,我正在禁用WP AutoP,它可以工作,但不在代码标记内:

functions.php

remove_filter (\'the_content\',  \'wpautop\');
add_filter( \'the_content\', \'wpautop\' , 12);
有什么想法吗?

1 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

您要么需要通过HTML编辑器添加此类代码(而不是切换回可视化编辑器),要么需要将自定义配置传递给可视化编辑器。

我也有类似的需求,下面是我在functions.php):

// http://tinymce.moxiecode.com/wiki.php/Configuration
function cbnet_tinymce_config( $init ) {

// Change code cleanup/content filtering config

    // Don\'t remove line breaks
    $init[\'remove_linebreaks\'] = false; 
    // Convert newline characters to BR tags
    //$init[\'convert_newlines_to_brs\'] = true; 
    // Preserve tab/space whitespace
    $init[\'preformatted\'] = true; 
    // Add to list of formats to remove with Remove Format button
    $init[\'removeformat_selector\'] = \'b,strong,em,i,span,ins,del,h1,h2,h3,h4,h5,h6,pre\';
    // Do not remove redundant BR tags
    $init[\'remove_redundant_brs\'] = false;

// Add to list of valid HTML elements (so they don\'t get stripped)

    // IFRAME
    $valid_iframe = \'iframe[id|class|title|style|align|frameborder|height|longdesc|marginheight|marginwidth|name|scrolling|src|width]\';
    // PRE
    $valid_pre = \'pre[id|name|class|style]\';
    // DIV
    $valid_div = \'div[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]\';

    // Concatenate 
    $cbnet_valid_elements = $valid_iframe . \',\' . $valid_pre . \',\' . $valid_div;

    // Add to extended_valid_elements if it alreay exists
    if ( isset( $init[\'extended_valid_elements\'] ) ) {
        $init[\'extended_valid_elements\'] .= \',\' . $cbnet_valid_elements;
    } else {
        $init[\'extended_valid_elements\'] = $cbnet_valid_elements;
    }

// Pass $init back to WordPress
    return $init;
}
add_filter(\'tiny_mce_before_init\', \'cbnet_tinymce_config\');
具体来说,您需要设置remove_linebreaksfalse, 设置preformattedtrue, 并可能添加<pre> 标记到白名单。

结束

相关推荐

Switching Code plugins

我目前正在使用“Wordpress代码片段”为插入到帖子中的代码添加功能。这个插件的工作方式是将代码添加到设置中的插件库中,然后执行类似于[代码:1]的操作(我记不清确切的语法了)我真的不太喜欢它的风格,所以我希望使用谷歌的美化。停用此插件会有什么影响?我会丢失所有的代码片段吗?我是否需要浏览每一篇文章并编辑所有的代码片段(即[代码:1])?