wordpress 添加文章浏览历史功能

发布于 2019-03-10

wordpress 添加文章浏览历史功能

如果想增加调用访客最近浏览过的文章功能,可以使用Last Viewed Posts这个插件,但由于这个插件很久没更新了,使用高版本的php及wordpress存在兼容性问题,可以按以下方式修改:

高版本的php不支持preg_replace,需要将

preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", stripslashes($_COOKIE["WP-LastViewedPosts"]))

替换为:

preg_replace_callback('!s:(\d+):"(.*?)";!', function($m) { return 's:'.strlen($m[2]).":\"$m[2]\";";}, stripslashes($_COOKIE["WP-LastViewedPosts"]))

修改完之后后台添加时报“无效值”错误,可以将

add_action('widgets_init', 'zg_lwp_init');

及zg_lwp_init方法代码改为extends WP_Widget的方法来初始化小工具,代码如下:

class last_viewed_posts extends WP_Widget {    
    public function __construct() {    
        $widget_ops = array(    
                'classname' => 'recently_viewed',    
                'description' => __( 'Last Viewed Posts' ),    
                'customize_selective_refresh' => true,    
        );    
        parent::__construct('last_viewed_posts', 'Last Viewed Posts', $widget_ops);    
    }    
        
    function widget($args, $instance) {    
        extract($args);    
        $title = apply_filters( 'widget_title', $instance['title'] );    
            
        echo $before_widget;    
        if ( ! emptyempty( $title ) )    
            echo $before_title . $title . $after_title;    
            ?>    
    
<div class="post_cat">    
    <div id="recently-viewed">    
    <?php if (function_exists('zg_recently_viewed')) { ?>    
    <?php zg_recently_viewed(); ?>    
    <?php } ?>    
    </div>    
</div>    
    
<?php    
    echo $after_widget;    
    }    
    function update( $new_instance, $old_instance ) {    
        if (!isset($new_instance['submit'])) {    
            return false;    
        }    
            $instance = $old_instance;    
            $instance = array();    
            $instance['title'] = strip_tags( $new_instance['title'] );    
            return $instance;    
        }    
    function form($instance) {    
        if ( isset( $instance[ 'title' ] ) ) {    
            $title = $instance[ 'title' ];    
        }    
        else {    
            $title = 'Last Viewed Posts';    
        }    
?>    
    <p><label for="<?php echo $this->get_field_id( 'title' ); ?>">标题:</label>    
    <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" /></p>    
        
    <input type="hidden" id="<?php echo $this->get_field_id('submit'); ?>" name="<?php echo $this->get_field_name('submit'); ?>" value="1" />    
<?php }    
}    
add_action( 'widgets_init', create_function( '', 'register_widget( "last_viewed_posts" );' ) );    
喜欢 2
奋楫笃行,臻于至善!

相关文章

BEGIN 主题搜索结果页面添加标题图片

BEGIN 主题可以给文章分类页面、独立页面以及文章详情页面添加标题图片,但是在搜索结果页面及 404 页面却无法通过配置添加标题图片,本文简单分享一下给搜索结果页面和 404 页面添加标题图片,以及...
阅读全文

WordPress 文章评论设置分页按时间倒序排序

WordPress 评论默认是按发布的时间顺序排列的,如果我们想按照时间倒序排列,可以根据本文的方法修改。 1、修改comment-template.php 编辑文件 wp-includes/comm...
阅读全文

BEGIN 主题最新文章页面添加加载更多按钮

使用 Begin 主题的博主可能都发现过这样一个问题:如果设置杂志布局,博客页面(本站叫最新文章)是不显示加载更多按钮图标的,而其他所有带分页的页面都显示。如果不显示加载更多按钮图标的话,我们就只能通...
阅读全文

使用 LetterAvatar 脚本生成首字图片替代默认评论头像

Gravatar 是全球通用头像,如果我们没有设置 Gravatar 头像,那么在网站上留言或评论就会显示默认的头像或者随机头像,这样的话用户体验不是很好。今天为大家分享一下使用 LetterAvat...
阅读全文

WordPress 文章链接地址 ID 不连续解决方法

Wordpress 默认情况下发布的文章 ID 不是连续的,是因为 Wordpress 自动草稿、文章修订版、页面、菜单、媒体等功能都要占用 ID,所以发布的文章 ID 一般是不连续的。今天为大家分享...
阅读全文

使用 iconfont 阿里矢量图标为网站添加图标的方法

Iconfont 是一个开源的矢量图标管理平台,它的图标库非常丰富,大概有一百三十多万个。Iconfont 可以按照需求定制图标字体库,还能随时修改,最重要的字体图标库只有 100 多 K。今天就来为...
阅读全文

共 4 条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注