【问题标题】:Modifying Wordpress plugin - Paid Memberships Pro修改 Wordpress 插件 - 付费会员专业版
【发布时间】:2013-04-17 13:57:41
【问题描述】:

我需要修改 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);
        }
    }

谢谢!

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

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

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

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

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

    您还可以查看插件使用的任何过滤器。钩子不仅仅用于核心。所有插件都应该使用它们(通常我不会使用任何没有使用的插件),并且任何使用的插件都可以使用钩子轻松修改。这就是他们的目的。这太棒了,因为这意味着 wordpress 中的任何内容都可以更改。

    【讨论】:

    • 最终只使用了您的最大高度/溢出技巧。最终我会重新审视这个,但现在它有效。
    猜你喜欢
    • 2014-01-22
    • 2014-08-14
    • 2015-10-01
    • 2015-02-27
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 2014-11-11
    相关资源
    最近更新 更多