是否有任何WordPress函数可以从帖子内容中检索特定的html元素

时间:2019-02-15 作者:Shahid Islam

我正在开发wordpress博客主题,我想使用文章内容中的heading1元素(标记)作为我的文章标题,而不是默认标题。实际上,我希望我的帖子标题比默认标题长一点(为了满足SEO建议,我需要设置更短的标题)。

也许我需要这样的东西<?php get_the_tag(); ?>

而不是<?php the_title(); ?>

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

您可以尝试从帖子中提取第一个H1标记的内容。

function get_first_h1(){

    //Get filtered content of post
    ob_start();
    the_content();
    $content = ob_get_clean();

    //Define matching pattern: content of h1 tags
    $h1_pattern = "~<h1>(.*)</h1>~";

    //Variable to hold results
    $header_matches = array();

    //Search content for pattern
    preg_match( $h1_pattern, $content, $header_matches );

    //First match will be 2nd item in array (first is entire content, if any matches)
    if ( count( $header_matches ) > 1 ){
        return $header_matches[1];
    }

    //Fallback: return post title
    return get_the_title();

}
备注:

该函数应保存在函数中。php、自定义插件或包含在该函数的其中一个结果中的文件可能会被回显或用作另一个函数的一部分,即回显get\\u first\\u h1()Personally, 我更喜欢上面雅各布·皮蒂的建议。创建自定义字段以存储所需的额外标题字段。我提供此解决方案,以防您必须这样做,即您有1000篇帖子,不想设置标题字段。

相关推荐

WordPress Recent Posts - Loop

我非常感谢您的帮助,我在列表项中写了一个循环,但我希望在缩略图上设置宽度和高度,并显示一些专家级的“文本”,但限制其长度。。。<ul> <!-- Define our WP Query Parameters --> <?php $the_query = new WP_Query( \'posts_per_page=3\' ); ?> <!-- Start our WP Query -->