TinyMCE-向OL添加类-选择器似乎没有获得父级OL,UL,只有Li的(4.6.3)

时间:2017-10-30 作者:theaemarie

TLDR:我正在尝试向<ol>, 如果不创建嵌套列表,似乎无法完成此操作。以下是我想要的:

<ol class="bold-numbers">
  <li>Item 1</li>
</ol>
以下是我通过以下所有这些方法得到的结果:

<ol>
  <li>
    <ol class="bold-numbers">
      <li>Item 1</li>
    </ol>
  </li>
</ol>
自定义样式方法我首先采用了这种方法,like in this question. 这些是我用于自定义样式的设置。“样式格式”下拉列表也已添加到菜单中。

function bb_mce_before_init_insert_formats( $init_array ) {  
  $style_formats = array(  
    array(  
      \'title\' => \'Bold Numbers\',
      \'block\' => \'ol\',
      \'classes\' => \'bold-numbers\',
      \'wrapper\' => true,
    )
  );
  $init_array[\'style_formats\'] = json_encode( $style_formats );
  return $init_array;  
} 
add_filter( \'tiny_mce_before_init\', \'bb_mce_before_init_insert_formats\' );  
我然后:

创建编号列表

  • 选择所有列表项
  • 从下拉列表中选择自定义样式
    1. 这会给我留下如下标记:

      <ol>
        <li style="list-style-type: none">
          <ol class="bold-numbers">
            <li>Lets try this again.</li>
            <li>With a new list, created from the first.</li>
            <li>Seems the spacing might be different between each line?</li>
          </ol>
        </li>
      </ol>
      
      因此,是的,正在添加该类,但如何防止额外的ol 是否要添加?

      操作:创建自己的按钮,然后我尝试创建自己的按钮,尝试捕获选择,解析HTML,添加类,然后返回添加的类。

      (function () {
        tinymce.create(\'tinymce.plugins.boldOL\', {
          init: function (editor, url) {
            editor.addButton(\'boldOL\', {
              title: \'Add ordered list with bold numbers\',
              text: \'Bold Number List\',
              icon: \'\',
              onclick: function () {
                var content = jQuery(editor.selection.getContent())[0];
                var wrap = document.createElement(\'div\');
                content.classList.add(\'bold-numbers\');
                wrap.appendChild(content);
                editor.selection.setContent( wrap.innerHTML );
              }
            });
          },
          createControl: function (n, cm) {
            return null;
          },
        });
        tinymce.PluginManager.add(\'boldOL\', tinymce.plugins.boldOL);
      })();
      
      这很有趣,因为当我安慰我的选择时,它使用了ul 而不是ol. 但仍然只是将其插入到列表项中:

      <ol>
        <li>
          <ul class="bold-numbers">
            <li>item here</li>
          <ul>
        </li>
      </ol>
      

      短代码

      作为最后的手段,我尝试创建一个只添加一个短代码的按钮div 类的包装器。“按钮”最终给我留下了同样的问题,tinymce捕获的选择仍然包含在父级中olul.

      因此,我有:

      <ol>
        [shortcode inserted here]
        <li>Items</li>
        [/shortcode]
      <ol>
      
      有什么线索可以让这一切发生吗?

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

    我想出来了!我最后跑了过去this page today 寻找其他东西并思考,就是这样。

    我需要这个财产\'selector\', 因为这似乎指导了选择的目标,所以我改变了\'block\' => ol\'selector\' => \'ol\'.

    function bb_mce_before_init_insert_formats( $init_array ) {  
      $style_formats = array(  
        array(  
          \'title\' => \'Bold Numbers\',
          \'selector\' => \'ol\',
          \'classes\' => \'bold-numbers\',
          \'wrapper\' => true,
        )
      );
      $init_array[\'style_formats\'] = json_encode( $style_formats );
      return $init_array;  
    } 
    add_filter( \'tiny_mce_before_init\', \'bb_mce_before_init_insert_formats\' );  
    

    结束

    相关推荐

    从wp_list_ages中排除具有特定模板的页面

    在您将此标记为重复之前,我已经在所有其他问题中尝试了所有方法,但没有一个有效。我正在尝试排除任何带有页面模板page noindex的页面。来自wp\\u list\\u pages()的php;查询下面的代码不起作用,当我回显$The\\u查询时,它只显示“Array”。 <?php $the_query = array( \'post_type\' => \'page\', /* overrides default \'p