个人笔记, 其他记录

WordPress主题推荐

WordPress插件推荐参考这篇文章:WordPress中常用的插件

本篇推荐一些WordPress主题。通常来说,一个主题不会完全满足自己所有的预期,如果想要修改一些细节,需要手动编辑WordPress主题的底层PHP代码,这稍微有点门槛。在手动编辑主题后,最好不要随意更新主题,否则会覆盖修改的内容,可通过修改版本号来取消更新提示。

这里列出自己使用过的几个WordPress主题:

  1. 主题:Dara。使用例子:https://www.guanjihuan.com
  2. 主题:Polite。使用例子:https://py.guanjihuan.com
  3. 主题:Twenty Fifteen。使用例子:https://doc.guanjihuan.com
  4. 主题:Blocksy。使用例子:https://fund.guanjihuan.com
  5. 主题:Academica。使用例子:https://www.condensed-matter-physics.com
  6. 主题:Content。
  7. 主题:BlogSite。
  8. 主题:Twenty Twelve。
  9. 主题:WP Notes。

使用一个新主题时,在主题中可能需要修改的地方:

1. 给网站加入图标

在主题header.php文件中添加以下代码:

<link rel="icon" href="文件.png" sizes="16x16" type="image/png">

参考资料:网站加入图标四种方法

2. 加入统计代码

在主题header.php文件中插入百度统计代码。

3. 修改页面底部

在主题footer.php文件中修改底部显示的文字,可删除一些不必要的文字。

4. 修改字体

在自定义中额外CSS中填入以下代码,把字体改为Times New Roman + 微软雅黑

*:not([class*="icon"]):not(i){font-family: 'Times New Roman' , "Microsoft YaHei" !important;}

参考资料: wordpress怎么改中文字体

5. 在首页中只显示摘要

有些主题在首页显示的是全文,而不是摘要。如果要在首页中只显示摘要,则要在主题编辑器里修改文件component - post - content.php,把内容的输出改为以下内容:

if(!is_single()) {
        the_excerpt();
	} 
	else {
	the_content(__('(more…)'));
        }

如果要修改摘要字数,在functions.php中增加:

function custom_excerpt_length( $length ) {  
return 200;  
}  
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );  

参考资料:

[1] 如何让WORDPRESS不显示文章全部内容,只显示部分摘要

[2] wordpress文章摘要限制the_excerpt()字符数(文字数量)

6. 解决字符转义的问题

在wordpress中有时候会转义显示为别的内容,如两个下划线。遇到这种情况这么解决:打开当前主题里面的functions.php函数文件,在文件末尾添加以下代码:

remove_filter('the_content', 'wptexturize');

参考资料:解决WordPress中字符转义的问题WordPress 常用函数 / wptexturize

7. 广告代码

在主题header.php文件中可插入第三方广告的身份认证代码。如果是百度广告,需要网站备案才行。不建议添加谷歌广告,因为会大幅度减慢网页速度。

由于广告在很大程度上会影响阅读体验,也会影响打开速度,因此这里不推荐添加。

8. 设置文章和页面中链接默认在新窗口中打开

推荐使用这个插件:WP External Links,可以使得外链在新窗口打开。

另外,可在WordPress主题的 functions.php中添加下面的代码,实现链接全部在新窗口打开(不推荐):

function autoblank($text) {
	$return = str_replace('<a', '<a target="_blank"', $text);
	return $return;
}
add_filter('the_content', 'autoblank');

这种方式就是默认为在新窗口中打开,只限于在内容部分(文章和页面)。而菜单栏、边栏、文章列表,以及php调用的内容还是默认在自身页面打开。采用这种方法,如果在内容 (文章和页面) 中个别链接要在本身页面中打开,这时候是没办法的,暂时找不到解决办法,所以不推荐。

9. 在文章或页面中调用公共的内容

列举三个方法【推荐第一种方法】:

(1)使用Content Blocks插件。

(2)使用Insert PHP Code Snippet插件。在页面中新建一个公共的模板,填写内容,记住页面的id。然后在插件中写入以下代码(记得修改id)。最后在文章或页面中有需要的地方调用。

<?php
$page_id = 100;
echo get_post($page_id) -> post_content;
?>

(3)如果是所有的文章都使用某个公共的内容,那么也可以在WordPress主题里修改,components -> post -> content.php,在这里写上php代码。这样所有的文章都会调用该内容。

10. 加上网站运行时间

代码如下(可以修改BirthDay):

<div>网站运行:<SPAN id="dtdt" style="color: white;"></SPAN></div>
		<SCRIPT language=javascript>
			function show_date_time(){
			window.setTimeout("show_date_time()", 1000);
			BirthDay=new Date("10/13/2019 0:0:0");
			today=new Date();
			timeold=(today.getTime()-BirthDay.getTime());
			sectimeold=timeold/1000
			secondsold=Math.floor(sectimeold);
			msPerDay=24*60*60*1000
			e_daysold=timeold/msPerDay
			daysold=Math.floor(e_daysold);
			e_hrsold=(e_daysold-daysold)*24;
			hrsold=Math.floor(e_hrsold);
			e_minsold=(e_hrsold-hrsold)*60;
			minsold=Math.floor((e_hrsold-hrsold)*60);
			seconds=Math.floor((e_minsold-minsold)*60);
			dtdt.innerHTML='<font style=color:white>'+daysold+'</font> 天 <font style=color:white>'+hrsold+'</font> 时 <font style=color:white>'+minsold+'</font> 分 <font style=color:white>'+seconds+'</font> 秒';
		}
		show_date_time();
		</script>

如果网站是多用户模式,可能需要修改的地方有:

1. 列出Wordpress中的所有作者

<ul> 
 <?php wp_list_authors("exclude_admin=0&optioncount=1&show_fullname=1&hide_empty=1"); ?>  
</ul>

参考资料:如何在WordPress中列出您博客中的所有作者

2. 后台管理显示注册的时间

/**
 * WordPress 后台用户列表显示注册时间
 * https://www.wpdaxue.com/display-user-registerdate.html
 */
class RRHE {
	// Register the column - Registered
	public static function registerdate($columns) {
		$columns['registerdate'] = __('注册时间', 'registerdate');
		return $columns;
	}
 
	// Display the column content
	public static function registerdate_columns( $value, $column_name, $user_id ) {
		if ( 'registerdate' != $column_name )
			return $value;
		$user = get_userdata( $user_id );
		$registerdate = get_date_from_gmt($user->user_registered);
		return $registerdate;
	}
 
	public static function registerdate_column_sortable($columns) {
		$custom = array(
		  // meta column id => sortby value used in query
			'registerdate'    => 'registered',
			);
		return wp_parse_args($custom, $columns);
	}
 
	public static function registerdate_column_orderby( $vars ) {
		if ( isset( $vars['orderby'] ) && 'registerdate' == $vars['orderby'] ) {
			$vars = array_merge( $vars, array(
				'meta_key' => 'registerdate',
				'orderby' => 'meta_value'
				) );
		}
		return $vars;
	}
 
}
 
// Actions
add_filter( 'manage_users_columns', array('RRHE','registerdate'));
add_action( 'manage_users_custom_column',  array('RRHE','registerdate_columns'), 15, 3);
add_filter( 'manage_users_sortable_columns', array('RRHE','registerdate_column_sortable') );
add_filter( 'request', array('RRHE','registerdate_column_orderby') );

参考资料:https://www.wpdaxue.com/display-user-registerdate.html

3. 关闭标签功能

在functions.php中添加:

//关闭标签功能
function mt_unregister_post_tag() {
    unregister_taxonomy_for_object_type('post_tag', 'post');
}
add_action( 'init', 'mt_unregister_post_tag' );

4. 后台只显示作者自己的文章

在functions.php中添加:

// 只显示作者自己的文章
function mypo_parse_query_useronly( $wp_query ) {
    if ( strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit.php' ) !== false ) {
        if ( !current_user_can( 'manage_options' ) ) {
            global $current_user;
            $wp_query->set( 'author', $current_user->id );
        }
    }
}
add_filter('parse_query', 'mypo_parse_query_useronly' );

5. 媒体库中只显示作者自己的文件

在functions.php中添加:

//在文章编辑页面的[添加媒体]只显示用户自己上传的文件
function my_upload_media( $wp_query_obj ) {
	global $current_user, $pagenow;
	if( !is_a( $current_user, 'WP_User') )
		return;
	if( 'admin-ajax.php' != $pagenow || $_REQUEST['action'] != 'query-attachments' )
		return;
	if( !current_user_can( 'manage_options' ) && !current_user_can('manage_media_library') )
		$wp_query_obj->set('author', $current_user->ID );
	return;
}
add_action('pre_get_posts','my_upload_media');

//在[媒体库]只显示用户上传的文件
function my_media_library( $wp_query ) {
    if ( strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/upload.php' ) !== false ) {
        if ( !current_user_can( 'manage_options' ) && !current_user_can( 'manage_media_library' ) ) {
            global $current_user;
            $wp_query->set( 'author', $current_user->id );
        }
    }
}
add_filter('parse_query', 'my_media_library' );

6. 评论中只显示和作者自己文章相关的评论

在functions.php中添加:

//后台只显示当前用户文章关联的评论  (需要修改数据库名wp_,这里为guan_wp_)
function wpdx_get_comment_list_by_user($clauses) {
        if (is_admin()) {
                global $user_ID, $wpdb;
                $clauses['join'] = ", guan_wp_posts";
                $clauses['where'] .= " AND guan_wp_posts.post_author = ".$user_ID." AND 	guan_wp_comments.comment_post_ID = guan_wp_posts.ID";
        };
        return $clauses;
};
if(!current_user_can('edit_others_posts')) {
add_filter('comments_clauses', 'wpdx_get_comment_list_by_user');
}

【未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com

33 次浏览

发表评论

您的电子邮箱地址不会被公开。