其实本文主要解决的是WP Editor.md编辑器无法应用在说说页面的问题,这个高大上的标题就是吓唬人的

先声明版本号,免得被时空猎杀

  • sakurairo版本:2.4.5
  • WP Editor.md版本:10.2.1

WP Editor.md是WordPress里的一款markdown编辑器插件,按照作者的话来说,“或许这是一个WordPress中最好,最完美的Markdown编辑器”,这款md编辑器也得到了sakura主题作者的推荐。测试下来,在代码高亮、公式渲染、语法支持上面,确实是对sakurairo主题兼容性最好的markdown编辑器插件。
image.png

来自大佬的推荐

今天主要是想解决一个小问题,那就是WP Editor.md无法渲染发布在“说说”里面的文章。

这个问题直观的表现就是,在普通的文章页面中WP Editor.md可以正常地将markdown代码渲染成HTML文档;而在说说页面,markdown代码不能被渲染,只会源码输出,如下图:
image8aba2218b289fafa.png

这是前台渲染的页面

image2af2ca6989d10b74.png

这是后台文章md源码

不难看出md源代码确实是被原样输出了,没有经过渲染。
不知道有多少小伙伴在用markdown来写作,也不知道你们是否遇到了这个问题。可能看到这里的大佬,已经看出了解决办法。
确实,这是一个很简单的问题,解决起来也不难。但还是记录一下解决办法吧水文章,如果能帮到需要的人,那就更好了。
要解决这个问题,我们需要知道主题的“说说”页面里面的“说说”是怎么来的。
查看主题源码发现,生成后台说说页面(目录?)(文章类型?)的代码如下:

function shuoshuo_custom_init()
{
    $labels = array(
        'name' => __("Ideas", "sakurairo"),
        'singular_name' => __("Idea", "sakurairo"),
        'add_new' => __("Publish New Idea", "sakurairo"),
        'add_new_item' => __("Publish New Idea", "sakurairo"),
        'edit_item' => __("Edit Idea", "sakurairo"),
        'new_item' => __("New Idea", "sakurairo"),
        'view_item' => __("View Idea", "sakurairo"),
        'search_items' => __("Search Idea", "sakurairo"),
        'not_found' => __("Not Found Idea", "sakurairo"),
        'not_found_in_trash' => __("No Idea in the Trash", "sakurairo"),
        'parent_item_colon' => '',
        'menu_name' => __("Ideas", "sakurairo")
    );
    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'query_var' => true,
        'rewrite' => true,
        'capability_type' => 'post',
        'has_archive' => true,
        'hierarchical' => false,
        'menu_position' => null,
        'supports' => array(
            'title',
            'editor',
            'author'
        )
    );
    register_post_type('shuoshuo', $args);
}
add_action('init', 'shuoshuo_custom_init');

说来惭愧,因为接触WordPress的时间不算太长,许多东西还没来得及去了解,我暂时还无法向你解释这些代码。初步看起来这是在设置后台的菜单,以及建立新的文章目录(类型),并且可以向这个目录中添加文章?等我学习完,会将这些内容补上。

下面这些代码用于将所有“说说”集合到一起生成一个“说说”页面。本质上,每一条“说说”都是一篇文章。

<?php
    query_posts("post_type=shuoshuo & post_status=publish & posts_per_page=-1");
    if (have_posts()) : ?>
        <ul class="cbp_tmtimeline">
            <?php
                while (have_posts()) : the_post(); ?>
                    <li>
                        <span class="shuoshuo_author_img"><img src="<?php echo get_avatar_profile_url(get_the_author_meta('ID')); ?>" class="avatar avatar-48" width="48" height="48"></span>
                        <div class="cbp_tmlabel">
                        <p><?php the_content(); ?></p>
                        <p class="shuoshuo_time"><i class="fa fa-clock-o"></i> <?php the_time('Y年n月j日 G:i'); ?></p>
                        </div>
                    </li>
                <?php endwhile; ?>
        </ul>
    <?php
    else : ?>
        <h3 style="text-align: center;">你还没有发表说说噢!</h3>
        <p style="text-align: center;">赶快去发表你的第一条说说心情吧!</p>
    <?php
    endif; ?>

在上面的代码中,可以提取到一个有用的东西post_type=shuoshuo,暂且称之为获取文章类型为shuoshuo的文章。也就是说,“说说”的文章类型为shuoshuo

接下来看一下WP Editor.md是如何渲染文章的,或者说,它是怎么样确定那些文章是需要渲染的。
根据由上面的代码获取到了关键字post_type,来搜索WP Editor.md插件目录看看有啥发现,如下:

/**
 * We don"t want Markdown conversion all over the place.
 *
 * @return null
 */
public function add_default_post_type_support() {
    add_post_type_support("post", self::POST_TYPE_SUPPORT);
    add_post_type_support("page", self::POST_TYPE_SUPPORT);
    add_post_type_support("revision", self::POST_TYPE_SUPPORT);
}

简单翻译一下注释你就会发现,这里就是用于确定插件该渲染那些类型的页面的地方。WP Editor.md渲染的页面类型包括“文章页面”、“独立页面”、“版本修订页面”。这就好办了,把“说说”页面加进去就好了。
add_post_type_support("revision", self::POST_TYPE_SUPPORT);下一行添加“说说”页面类型add_post_type_support("shuoshuo", self::POST_TYPE_SUPPORT);

最后将“说说”重新发布(这是必要的流程),就可以将markdown渲染成HTML文档了。
示例请看动态,所有的动态均用markdown书写。

end

この素晴らしい世界に祝福を!
最后更新于 2022-05-23