Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 修改Wordpress插件-付费会员资格专业版_Php_Wordpress - Fatal编程技术网

Php 修改Wordpress插件-付费会员资格专业版

Php 修改Wordpress插件-付费会员资格专业版,php,wordpress,Php,Wordpress,我需要修改Wordpress插件(Paid Memberships Pro)显示摘录的方式,这实际上已经变成了一个由两部分组成的问题 第一部分:有人能告诉我正确修改插件的方向吗?是否有类似于钩子/过滤器的东西可以在核心上使用 有趣的部分: 我想修改这段代码,以确保无论段落长度如何,只显示1段。如果段落短于55个字符,则显示整个段落,仅此而已。如果超过55个字符,则显示这55个字符,仅此而已 以下是插件中的代码: //if show excerpts is set, return just the

我需要修改Wordpress插件(Paid Memberships Pro)显示摘录的方式,这实际上已经变成了一个由两部分组成的问题

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

有趣的部分:

我想修改这段代码,以确保无论段落长度如何,只显示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);
        }
    }
//如果设置了“显示摘录”,则只返回摘录
如果(pmpro_getOption(“showExtracts”))
{           
//节目节选
全球$员额;
如果($post->post_摘录)
{                               
//限定行使
$content=wpautop($post->post_节选);
}
elseif(strpos($content,“ID.”\“>”)==false)
{               
//更多标签
$pos=strpos($content,“ID.”\“>”);
$content=wpautop(substr($content,0,$pos));
}
elseif(strpos($content,'class=“more link”>')!==false)
{
//更多链接
$content=preg\u replace(“/\.\/”,“”,$content);
}
其他的
{
//自动生成的摘录。从wp_trim_摘录中提取
$content=strip\u短代码($content);
$content=str_replace(']]>',']]',$content);
$content=带标签($content);
$extract_length=应用过滤器('extract_length',55);
$words=preg_split(“/[\n\r\t]+/”,$content,$extract_length+1,preg_split_NO_EMPTY);
如果(计数($words)>$extract\u长度){
数组_pop($words);
$content=内爆(“”,$words);
$content=$content.“…”;
}否则{
$content=内爆(“”,$words)。“…”;
}
$content=wpcontop($content);
}
}

谢谢

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

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

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

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


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

最终只是使用了你的最大高度/溢出技巧。最后,我会再次讨论这个问题,但目前它仍然有效。