处理微博中标题缺失的最佳方法

时间:2011-11-19 作者:peroyomas

我正在尝试用WordPress做“微博”,当一个人使用不同的帖子“格式”(格式可能与核心WP功能相关,也可能与核心WP功能无关)时,我怀疑如何处理“标题”。许多微博服务都没有任何类型的标题字段,但当出于技术原因需要标题时,如HTML页面标题、永久链接或RSS帖子标题,它会自动从元数据(如帖子日期)或帖子中的简短摘录中生成。有些情况下,用户根本就不把文本放在图像或视频中(这不是一个好的做法,但这是另一个问题);在这些情况下,至少在Tumblr中,HTML页面标题不存在,永久链接只是帖子的“id”,RSS标题只是帖子的“格式”名称。

我左右为难的是,在可以选择使用空标题的情况下,处理空标题的最佳做法是什么:

从帖子内容的第一个字符自动生成标题。当主题与“内容”的第一个字符重合时,主题必须具有不显示标题的功能。P2主题就是这样工作的,但除了自动生成标题功能本身之外,我不知道是否可以在通用插件中使用有条件地不在循环中显示标题的选项。此外,在某些情况下,可能不清楚标题是自动生成的(并且可以自动替换)还是实际的自定义输入

  • 根本不自动生成帖子标题并将其保留为空,但仍然会为HTML页面标题、帖子片段和RSS提要生成自动标题。这可能解决了前面方法的一些问题,但我不知道如何在不创建整个自定义模板而不是简单函数的情况下生成HTML页面标题和RSS提要标题。虽然我觉得在仪表板中有没有标题的帖子可能很难管理
  • 3 个回复
    SO网友:Otto

    帖子标题不能是空的,因为它用于创建帖子的slug,这在permalink中经常使用。

    使用p2方法并自动生成标题。这解决了很多问题。你是否在主题中显示该标题取决于你自己。

    SO网友:fuxia

    我已经编写了一个简单的插件来创建帖子标题\'save_post\': Fix Empty Titles.
    何时何地向访问者显示标题取决于主题作者。您可以检查当前帖子的帖子格式。

    SO网友:peroyomas

    我找到了另一种方法。或多或少基于Konstantin-Kovshenin方法。不确定是否将其标记为正确。它可能会导致性能问题,但仍然存在。首先,制作一个过滤器,使默认的“标题”模板标记按内容的第一个字母填充空标题字段。

    add_filter( \'the_title\', \'empty_title_fix\' );
    add_filter( \'single_post_title\', \'empty_title_fix\');
    function empty_title_fix( $titles ) {
    if ( strlen( trim( $titles ) ) < 1 ) {
        $daa = get_post($idd);
        $conten = $daa->post_content;
        $contents = trim(strip_tags($conten));
        if (strlen($contents) > 40) {
            $titles = substr($contents, 0, 40) . \'...\';
    //this is if the content has no words (like with a single image or video). It can be different.
        } elseif (strlen($contents) == 0) {
            $format = get_post_format();
            if ( false === $format ) {
                $format = \'post\';
    
            }
            $titles = ucfirst($format);
            } else {
                $titles = substr($contents, 0, 40);
            }
        }
    return $titles;
    }
    
    这是为了使用与上述类似的方法自动生成后期段塞,以替换“数字”段塞。

    add_action(\'publish_post\', \'insert_automatic_post_slug\', 10, 2);
    function insert_automatic_post_slug($postID, $post) {
            if($post->post_name == $postID) {
                $content = trim(strip_tags($post->post_content));
                if (strlen($content) > 40) {
                    $title = substr($content, 0, 40) . \'...\';
                } elseif (strlen($content) == 0) {
                    $format = get_post_format();
                    if ( false === $format ) {
                        $format = \'post\';
                    }
                    $title = ucfirst($format);
                } else {
                    $title = substr($content, 0, 40);
                }
                $post->post_name = sanitize_title($title);
                $result = wp_update_post($post);
                }
    }
    
    然后,所有的标题标记anywere都被内容的第一个字符或其他回退字符替换。如果标题标记为空,则可以在主题中手动选择是否显示标题标记。

    //Simplified version to get the point across.
    <?php $my_id = get_the_ID();
    $post_id = get_post($my_id);
    $post_title = $post_id->post_title;
    if (!empty($post_title)) { ?>
    <h1 class="entry-title"><?php the_title(); ?></h1>  
    <?php } ?>
    

    结束

    相关推荐

    如何从wp_title中删除“Taxonomy Name:”

    生成的wp\\U标题<title> 在我的自定义分类法归档页面中,包含带有冒号的单数分类法名称。我不知道这是从哪里来的(或者它是否是默认的Wordpress行为),我想删除它。例如,在名为“香精”的分类法中术语“香草”的归档页面中<title> 是口味:香草|我的网站名称我想要的标题是香草|我的网站名称标题中的代码。php是这样的:<title><?php wp_title(\'|\', true, \'right\'); ?></title>&