利用 WordPress REST API 给 WordPress 做一个归档页面吧

2019-9-8 chenmo wordpress

代码

WordPress REST API 默认以 date (文章发布日期) 来排序文章输出,所以可以遍历全部文章,判断上下篇发布年份来按照年份归档文章


//获取文章列表
            axios.get('https://www.ouorz.com/wp-json/wp/v2/posts?per_page='+window.post_count) //默认以发布时间排序
             .then(response => {
                 this.posts = response.data
             })
             .then(() => {
                 var k = -1;
                 var i = 0;
                 for(i=0;i<(this.posts).length;i++){ //遍历所有文章
                     if( ((this.posts[i].date.split('T'))[0].split('-'))[0] !== this.last_year ){ //当前文章发布年与上一篇不同
                         this.posts_array[k += 1] = []; //初始化数组
                         this.posts_array[k]['posts'] = []; //初始化 posts 数组
                         this.posts_array[k]['year'] = parseInt(((this.posts[i].date.split('T'))[0].split('-'))[0]); //增加年份
                         this.posts_array[k]['posts'][(this.posts_array[k]['posts']).length] = this.posts[i]; //增加文章
                         this.last_year = ((this.posts[i].date.split('T'))[0].split('-'))[0]; //赋值当前文章发布年份
                     }else{ //发布年份与上一篇相同
                        this.posts_array[k]['posts'][(this.posts_array[k]['posts']).length] = this.posts[i]; //增加文章
                     }
                 }
                 this.loading = false;
            })

查询了 WordPress REST API 文档之后,发现每次请求的文章总数( 也就是 per_page 参数 )不可以超过 100,但是归档页面理应展示全部文章,于是需要在 function.php 增加以下钩子和函数拓宽这个限制

https://github.com/WP-API/WP-API/issues/2914

add_filter( 'rest_post_collection_params', 'my_prefix_change_post_per_page', 10, 1 );

function my_prefix_change_post_per_page( $params ) {
    if ( isset( $params['per_page'] ) ) {
        $count_posts = wp_count_posts();
        $params['per_page']['maximum'] = $count_posts->publish; //增加限制到当前文章总数
    }
    return $params;
}


标签: wordpress 页面 归档 REST API

评论(0) 浏览(137)

关闭wordpress自动更新和修订

2019-9-8 chenmo wordpress

屏蔽WP更新

编辑主题文件的functions.php,在靠前的地方把下面的代码粘贴进去

//隐藏管理后台帮助按钮和版本更新提示
function hide_help() {
	echo'<style type="text/css">#contextual-help-link-wrap { display: none !important; }  .update-nag{ display: none !important; } #footer-left, #footer-upgrade{ display: none !important; } #wp-admin-bar-wp-logo{display: none !important;}.default-header img{width:400px;}</style>';
}
add_action('admin_head', 'hide_help');
add_filter('pre_site_transient_update_core', create_function('$a', "return null;")); // 关闭核心提示
add_filter('pre_site_transient_update_plugins', create_function('$a', "return null;")); // 关闭插件提示
add_filter('pre_site_transient_update_themes', create_function('$a', "return null;")); // 关闭主题提示
remove_action('admin_init', '_maybe_update_core'); // 禁止 WordPress 检查更新
remove_action('admin_init', '_maybe_update_plugins'); // 禁止 WordPress 更新插件
remove_action('admin_init', '_maybe_update_themes'); // 禁止 WordPress 更新主题

关闭修订

修改WP根目录下的wp的wp-config.php,在require_once(ABSPATH . 'wp-settings.php');之前插入

/** 禁用文章修订功能 */
define('WP_POST_REVISIONS', false);

/** 禁用自动保存功能 */
define('AUTOSAVE_INTERVAL', false);

标签: wordpress 自动 修订 更新

评论(0) 浏览(125)

wordpress 用sqlite数据库全新安装

2018-7-22 chenmo wordpress

wordpress一般都搭配mysql,安装比较简单。但想要用sqlite数据库,要费翻功夫了。


 首先到官网下载wordpress安装包解压到/var/www目录下


       http://cn.wordpress.org/


然后是下载sqlite插件


      http://wordpress.org/plugins/sqlite-integration/

把解压后的包放到wp-content/plugin/目录下


 再把包里面的db.php复制到wp-content目录下


 进入wordpress的根目录,把wp-config-sample.php重命名为wp-config.php


  编辑wp-config.php添加:


define('USE_MYSQL', false);

 运行并配置博客,开始你的wordpress博客之旅吧


标签: wordpress sqlite

评论(0) 浏览(571)

分享:WordPress根据分类调用文章模板

2014-9-22 chenmo wordpress

如果我们用WordPress做一个企业网站必然会遇到一个问题,新闻内容的页面和企业产品的页面的布局格式肯定是不一样的。如何实现这两者不同的文章类型调用不同的模板呢,今天我就跟大家分享一下如何根据分类调用文章模板。

第一步:建立一个single.php文件,如果你的模板目录已经有这个文件,可以将下面的一段代码内容替换原来的内容。


<?php

if(in_category('product') {
	include(TEMPLATEPATH . '/single-product.php');
}

else {
	include(TEMPLATEPATH . '/single-default.php');
}

?>


上面代码的意思就是,判断文章是否属于product的分类,如果是就调用product的文章模板,默认调用product的文章模板。

第二步:分别建立single-product.php和single-default.php文件,并调用不同的文章内容循环程序。以single-product.php为例子,single-product.php的内容见下面的代码:


		<div id="container">
			<div id="content" role="main">

			<?php get_template_part( 'loop', 'product' ); ?>

			</div><!-- #content -->
		</div><!-- #container -->


第三步:分别建立loop-product.php和loop-default.php文件,这两个文件就是针对不同的模板进行的文章内容布局。


其实这个是很简单的,只要研究透了原理,举一反三,可以实现一些更高级的功能。好了,今天就分享到这里了,如果还有疑问的话可以联系谭海波为你解答。

文章出处:http://tanhaibo.net/2014/04/entry-template.html

标签: wordpress 调用 模板 文章 分享 分类

评论(0) 浏览(1463)

删除WordPress文章自动草稿与修订版本

2014-9-15 chenmo wordpress

当我们在用WordPress发布文章的时候,会产生很多自动保存的草稿和N多个修订版,这样一来不但浪费了很多ID,而且也给数据库增加了不少负担,长此以往就有很多数据都是垃圾数据,相信这个问题困扰了很多使用WordPress的朋友,今天我就来分享下如何解决这个问题。

我们先说删除文章的修订版本吧,其实很简单,只要打开WordPress根目录下的wp-config.php文件,在适合的地方加上“define(‘WP_POST_REVISIONS’, false);”这一行代码即可。

删除自动草稿只要在主题目录下的functions.php文件增加下面一段代码即可。


/* 移除自动保存和修订版本 */
 remove_action('pre_post_update', 'wp_save_post_revision' );
 add_action( 'wp_print_scripts', 'disable_autosave' );
 function disable_autosave() {
 wp_deregister_script('autosave');
 }
那么如何删除之前已经存在的自动草稿和文章修订版本呢?首先确保你有数据库修改的权限,目前一般的PHP服务器或虚拟空间都会提供phpmyadmin的数据库管理平台,登录了以后进入所在数据库,然后插入SQL语句查询,以谭海波博客为例,我执行了这两行代码,就把自动草稿和修订版本全部给咔嚓了。



SELECT * FROM `thb_posts` WHERE post_status="auto-draft";
SELECT * FROM `thb_posts` WHERE post_type="revision";


标签: wordpress 版本 文章 自动 草稿 修订

评论(0) 浏览(1328)

Powered by emlog 湘ICP备13007859号 空间由景安网络赞助