修改Wordpress插件-付费会员


Modifying Wordpress plugin - Paid Memberships Pro

我需要修改一个Wordpress插件(付费会员专业版)显示摘录的方式,这实际上已经变成了一个两部分的问题。

第一部分:有人能指点我正确修改插件的方向吗?是否有类似钩子/过滤器的东西可以在核心上使用?

有趣的部分:

我想修改这段代码,以确保无论其长度如何,只显示1段。如果段落短于55个字符,则只显示整段内容。如果大于55个字符,则只显示这55个字符。

下面是插件的代码:

//if show excerpts is set, return just the excerpt
    if(pmpro_getOption("showexcerpts"))
    {           
        //show excerpt
        global $post;
        if($post->post_excerpt)
        {                               
            //defined exerpt
            $content = wpautop($post->post_excerpt);
        }
        elseif(strpos($content, "<span id='"more-" . $post->ID . "'"></span>") !== false)
        {               
            //more tag
            $pos = strpos($content, "<span id='"more-" . $post->ID . "'"></span>");
            $content = wpautop(substr($content, 0, $pos));
        }
        elseif(strpos($content, 'class="more-link">') !== false)
        {
            //more link
            $content = preg_replace("/'<a.*class'='"more'-link'".*'>.*'<'/a'>/", "", $content);
        }
        else
        {
            //auto generated excerpt. pulled from wp_trim_excerpt
            $content = strip_shortcodes( $content );
            $content = str_replace(']]>', ']]&gt;', $content);
            $content = strip_tags($content);
            $excerpt_length = apply_filters('excerpt_length', 55);
            $words = preg_split("/['n'r't ]+/", $content, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
            if ( count($words) > $excerpt_length ) {
                array_pop($words);
                $content = implode(' ', $words);
                $content = $content . "... ";
            } else {
                $content = implode(' ', $words) . "... ";
            }
            $content = wpautop($content);
        }
    }

谢谢!

嗯,修改别人的插件通常是一个坏主意,因为如果他们更新它,你可能会丢失你的更改,或者你将无法更新(尽管意外发生)。

另一个选项比修改可以设置最大高度或宽度的跨度或div。或使用JavaScript/jquery在页面加载抓取内容并缩短它。或者使用wordpress过滤器在加载后但在显示之前过滤帖子内容。

我个人会找到它周围的div并设置最大尺寸。它简单、快速、可配置。

如果你必须修改插件。我建议复制它,重命名它,并在那里进行更改。然后,当有更新时,您可以更新、再次复制并手动添加更改。或者类似的内容

你还可以查看插件使用的任何过滤器。钩子不只是在核心中使用。所有的插件都应该使用钩子(通常我不会使用任何不使用钩子的插件),任何使用钩子的插件都可以很容易地使用钩子进行修改。这就是他们在那里的目的。这太棒了,因为这意味着wordpress中的任何东西都可以改变。