一般而言,一些主题无法控制文章摘要。
就会变成这样子
开启主题的functions.php使用这个代码后
- //用代码限制WordPress文章摘要的长度,且自订摘要后面的[…]
- #限制WordPress摘要长度
- function junzibuqi_com_excerpt_length() {
- #160为摘要长度,可以根据自己需要修改。
- return 160;
- }
- add_filter( 'excerpt_length', 'junzibuqi_com_excerpt_length', 999 );
- function junzibuqi_com_more() {
- #这样就直接将WordPress摘要的省略号[……]替换成了阅读阅读全文。
- return '"' . esc_url(get_permalink()) . '" class="gengduo">' . ' →[ 阅读全文 ] ← ';
- }
- add_filter('excerpt_more', 'junzibuqi_com_more');
wordpress的媒体库现在支援很多上传的格式。
但是我们如果只希望媒体库,仅接受图片格式。
我们可以用很简单的代码实现这点。
开启主题的functions.php加入以下代码就可以啰
- // 让wordpress媒体库只能上传图片格式
- add_filter('upload_mimes', 'custom_upload_mimes');
- function custom_upload_mimes( $existing_mimes=array() ) {
- $existing_mimes = array('jpg|jpeg|jpe' => 'image/jpeg',
- 'gif' => 'image/gif',
- 'png' => 'image/png',
- 'bmp' => 'image/bmp',
- 'tif|tiff' => 'image/tiff',
- 'ico' => 'image/x-icon');
- return $existing_mimes;
- }
所有文章
如果你想让某些文章是为了SEO而写的。
让搜寻引擎抓爬的,不让其他人阅读。
那你可以使用以下代码,放入主题的functions.php
就会出现这个图片,勾选之后就ok啰
- // 用代码让WordPress的某些文章只给搜寻引擎看
- function ludouseo_add_custom_box() {
- add_meta_box('ludou_se_only', '搜寻引擎专属', 'ludou_se_only', 'post', 'side', 'low');
- add_meta_box('ludou_se_only', '搜寻引擎专属', 'ludou_se_only', 'page', 'side', 'low');
- }
- add_action('add_meta_boxes', 'ludouseo_add_custom_box');
- function ludou_se_only() {
- global $post;
- //加入验证栏位
- wp_nonce_field('ludou_se_only', 'ludou_se_only_nonce');
- $meta_value = get_post_meta($post-XXXXXXXXXXXXXXXXXXXXXXXXXspan class="keyword"XXXXXX/spanXXXX/liXXXli class="alt"XXXXXXspan class="keyword"XXXX/spanXXXXXXXXXXXXXXX/liXXXliXXXXXXXXXXXXXXXXXinput name="ludou-se-only" type="checkbox" checked="checked" value="1" /> SEO专用';
- else
- echo '"ludou-se-only" type="checkbox" value="1" /> SEO专用';
- }
- // 保存选项设置
- function ludouseo_save_postdata($post_id) {
- // 验证
- if ( !isset( $_POST['ludou_se_only_nonce']))
- return $post_id;
- $nonce = $_POST['ludou_se_only_nonce'];
- // 验证栏位是否合法
- if (!wp_verify_nonce( $nonce, 'ludou_se_only'))
- return $post_id;
- // 判断是否自动保存
- if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
- return $post_id;
- // 验证用户许可权
- if ('page' == $_POST['post_type']) {
- if ( !current_user_can('edit_page', $post_id))
- return $post_id;
- }
- else {
- if (!current_user_can('edit_post', $post_id))
- return $post_id;
- }
- // 更新设置
- if(!empty($_POST['ludou-se-only']))
- update_post_meta($post_id, 'ludou_se_only', '1');
- else
- delete_post_meta($post_id, 'ludou_se_only');
- }
- add_action('save_post', 'ludouseo_save_postdata');
- function do_ludou_se_only() {
- // 本功能只对文章和页面有效
- if(is_singular()) {
- global $post;
- $is_robots = 0;
- $ludou_se_only = get_post_meta($post->ID, 'ludou_se_only', true);
- if(!empty($ludou_se_only)) {
- // 下面是搜寻引擎判断关键字阵列
- // 有点简单,自己优化一下吧
- $bots = array(
- 'spider',
- 'bot',
- 'crawl',
- 'Slurp',
- 'yahoo-blogs',
- 'Yandex',
- 'Yeti',
- 'blogsearch',
- 'ia_archive',
- 'Google'
- );
- $useragent = $_SERVER['HTTP_USER_AGENT'];
- if(!empty($useragent)) {
- foreach ($bots as $lookfor) {
- if (stristr($useragent, $lookfor) !== false) {
- $is_robots = 1;
- break;
- }
- }
- }
- // 如果不是搜寻引擎,就显示错误资讯
- // 已登入的用户不受影响
- if(!$is_robots && !is_user_logged_in()) {
- wp_die('您无权查看此文!');
- }
- }
- }
- }
- add_action('wp', 'do_ludou_se_only');
已经登入的会员,是可以看到的喔!
我们使用wordpress最小记忆体memory_limit是32M
有很多种可以修改memory_limit的方法
但通常有几个注意的地方。
如果你是租用虚拟主机,你可以直接请他们帮你做修改。
通常如果他们不愿意帮你做修改。
你可以自己修改看看,假如透过以下方法
用.htaccess 来修改memory_limit wordpress方法
这是最好的方法,也是最有效果的方法
因为一般人会说用php.ini来修改
可是这很困难的,一般来讲你若是租用虚拟主机,他们很难开放这个php.ini让你来修改。
我们可以先在根目录建立一个view-php-info.php档案
里面增加这段
[cc lang="php"]
[/cc]
http://你的网址/view-php-info.php
搜寻memory_limit就可以知道你目前的数值是多少
我们可以用.htaccess 来控制php.ini的数值。
当然最坏的可能,他们也控制了.htaccess
让你使用这段代码,放入.htaccess 依然无效。
[cc lang="php"] php_value memory_limit 128M [/cc]
那以下的方法,更不会有效果了
修改wordpress的wp-config.php
在里面增加
- // 正常网页的记忆体用量上限值
- define( 'WP_MEMORY_LIMIT', '1600M' );
- // 管理介面的记忆体用量上限值
- define( 'WP_MAX_MEMORY_LIMIT', '1600M' );
在第四行、和第六行可以做数值的修改。
这是优化wordpress一个很重要的作法。
设定浏览器快取功能(Expires headers),意思就是给你css,js,图片等文件,设定一个期限。
这什么意思呢?
利用「游览器缓存」配合「你网站的Expires headers(设定过期日期)」
有人第一次到你的网站,会下载所有的内容在他的游览器。
当你没有设定一个「期限」
这个人又来你的网站,游览器又会比对这些资料。
如果有一个期限,可以让游览器不需要比对这些资料。
加快了你网站速度。
如何检测此功能?
使用https://developers.google.com/speed/pagespeed/insights/
检查「使用浏览器快取功能」就可以知道,
具体做法
打开你网站根目录的.htaccess 贴入以下代码
[cc lang="php"]有时候你安装了wordpress,某些因素。
导致你的网域必须要输入www.你的网域。
那么可以透过那么可以透过.htaccess的控制
使不输入www就能跳转到你的网域
开启你根目录的.htaccess加入此代码
[cc lang="php"] RewriteEngine On RewriteCond %{HTTP_HOST} ^www.googlo.me$ [NC] RewriteRule ^(.*)$ http://googlo.me/$1 [L,R=301][/ cc]一般来讲,媒体库没有分类,其实挺乱的。
而且有时候若是按文章分类,文章若很多,真是眼花撩乱。
现在我们有一个很好的代码,解决这个问题。
开启你主题的functions.php加入以下代码
[cc lang="php"] //讓媒體庫也有獨立分類 function ludou_create_media_category() { $args = array( 'label' => '媒體分類', 'hierarchical' => true, 'show_admin_column' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' =>true, ); register_taxonomy( 'attachment_category', 'attachment', $args );}add_action( 'init', 'ludou_create_media_category' );[/cc]其实很多用wordpress的人,总是会忽略wordpress本身的参数设定
其实在后台里面设定,有很多地方我们可以去留意的
像在「设定>>一般」
可以设定网站标题,网志描述,是否开放注册等重要
「设定>>固定网址」
可以选择文章标题,强化seo等等
「设定>>讨论」
这边可以选择文章发表后,过多少天禁止留言评论
或者当有人发表留言评论,可以通知作者
其实有蛮多功能,可以一一去了解,那就可以省下很多解决问题的方式
如果你想要让wordpress的某部分内容,是只有注册/登入的人才可以看到。
那你可以使用这段代码。
开启主题的functions.php加入以下代码
[cc lang="php"]//用代码让wordpress的某部分内容,是只有注册/登入的人才可以看到add_shortcode( 'members', 'member_check_shortcode' );function member_check_shortcode( $atts, $content = null ) {if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )return $content;return '';}[/cc]具体调用方式。
在发布文章内容的时候,切换文字编辑模式,要注册/登入者可看的短码
[cc lang="php"][members]你好,仅有注册/登入会员可以看到[/members][/cc][members]你好,仅有注册/登入会员可以看到[/members]现在很多人会想建构开放注册的会员网站。
更希望你网站有发表新文章的时候,可以「自动通知用户」
那么这是一个很好的代码。
打开主题的functions.php,加入以下代码就可以啰!
当你wordpress网站有发表新文章,就会自动以e-mail通知用户啰!
[cc lang="php"] //用代碼讓wordpress發表新文章,通知註冊會員 function newPostNotify($post_ID) { if( wp_is_post_revision($post_ID) ) return; global $wpdb; $get_post_info = get_post($post_ID); if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) { // 讀取資料庫,取得所有用戶的email $wp_user_email = $wpdb->get_results("SELECT DISTINCT user_email FROM $wpdb->users"); foreach ( $wp_user_email as $email ) { // 信箱標題 $subject = '真正用wordpress網路賺錢,有新訊息喔'; // 信箱內容 $message = '標題:' . get_permalink($post_ID); // 寄發信箱 wp_mail($email->user_email, $subject, $message); } }} // 一旦WordPress有新文章发布或文章被修改即刻执行newPostNotify函数add_action('publish_post', 'newPostNotify');[/cc]seo没有很复杂,基本上很简单。
只是有一些小要点要留意。
就是当留言评论的内容,含有网址或连结时,容易让「搜寻引擎」的重心,转向外部连结。
因此我们可以用代码改变评论留言里面的内容。
变成这样http://dhamma.com.tw/?r=http://amitabhabuddhaya.com.tw/
具体做法,开启主题的functions.php贴入以下代码
[cc lang="php"] //用代码重写wordpress留言评论者的连结网址add_filter('get_comment_author_link', 'add_redirect_comment_link', 5);add_filter('comment_text', 'add_redirect_comment_link', 99);function add_redirect_comment_link( $text = ''){$text=str_replace('href="/zh-CN/, 'href="'.get_option('home').'/?r=', $text);$text=str_replace("href= '", "href='/zh-CN/.get_option('home')."/?r=", $text);return $text;}add_action('init', 'redirect_comment_link');function redirect_comment_link(){$redirect = $_GET['r'];$host = $_SERVER['HTTP_HOST'];if($redirect){if(strpos($_SERVER['HTTP_REFERER'],get_option('home')) !== false) {header("Location: $redirect#form:$host");exit;}else {header("Location: $redirect#form:$host");exit;}}}//让留言评论网址或连结加入nofollow属性add_filter('comment_text', 'auto_nofollow');function auto_nofollow($content) {//return stripslashes(wp_rel_nofollow($content));return preg_replace_callback('/]+/', 'auto_nofollow_callback', $content);}function auto_nofollow_callback($matches) {$link = $matches[0];$site_link = get_bloginfo('url');if (strpos($link, 'rel' ) === false) {$link = preg_replace("%(href=S(?!$site_link))%i", 'rel="nofollow" $1', $link);} elseif (preg_match("%href =S(?!$site_link)%i", $link)) {$link = preg_replace('/rel=S(?!nofollow)S*/i', 'rel="nofollow"', $link); }return $link;}[/cc]这个作法非常的简单喔!
只要将以下的API原码,贴在适当的位置就可以啰!
举例,像若你想在每一天文篇的下面增加二维码
那你就打开主题的single.php
贴在
[cc lang="php"][/cc]后面[cc lang="php"]完成我们一个网站,通常会出现一些版本号。这是可以隐藏的
像下图,当你搜寻ver的时候会找到像这样的
http://dhamma.com.tw/wp-content/themes/a/bootstrap/css/bootstrap.min.css?ver=9.4.8
假如你的css或js档案不常更换的话,一般来讲是很少更换,或是不会更换的
那你就用以下代码放入主题的functions.php
就可以解决css或js版本号一直出现问题
[cc lang="php"]//禁用WordPress资源的版本查询,实现WordPress的优化/** Remove Query strings from Static Resources. */ function _remove_script_version( $src ){ $parts = explode( '?', $ src ); return $parts[0]; } add_filter( 'script_loader_src', '_remove_script_version', 15, 1 ); add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );[/cc]如下图当搜寻引擎要收录你网站的讯息时。
范例
大自然整体净化道场发现你网站里面有很多外部连结,连结到别人的网站。
那是十分不利的作法。会流失自己的权力。
那也许外挂可以把外部连结转成内连,但是外挂不是一个很好的作法。
开启functions.php贴入以下代码
[cc lang="php"]//用代码将WordPress文章中的连结自动转成内部连结,大幅提升wordpress的搜寻优化add_filter('the_content','web589_the_content_nofollow',999);function web589_the_content_nofollow($content){ preg_match_all('/href="/zh-CN/http.*?)"/',$content,$matches); if($matches){ foreach($matches[1] as $val){ if( strpos($val,home_url ())===false ) $content=str_replace("href="/zh-CN/val"", "rel="nofollow" href="/zh-CN/" . get_bloginfo('wpurl'). "/link?url=" .base64_encode ($val). """,$content); } } return $content;}[/cc]ok,接着在网站根目录,注意,不是主题目录
网站根目录新建一个「link」资料夹
在「link」里面建立「index.php」(要编译成UTF-8码-档首无ROM)
在里面加入以下内容
[cc lang="php"]这样就完成啰!记得将网址改成你的网址就可以
之前我们有一篇wordpress的文章连结,加入nofollow属性
现在我们也要让页面具有这样的功能!
可以将代码贴入主题的functions.php
[cc lang="php"]//用代码为wordpress页面及文章的连结自动加上nofollow,优化wordpress的seo add_filter( 'the_content', 'cn_nf_url_parse'); function cn_nf_url_parse( $content ) { $regexp = "这是一篇很棒的教学!
毕竟wordpress的外挂有非常多种。
假如你并不希望你后台的外挂被人看到。
那使用这个代码就可以隐藏啰!
在你的主题function.php加入以下代码
如何删除 WordPress 一级选单
将此部分粘贴到您的代码片段插件中。注意代码中的注释,因为这会告诉你代码的哪一部分删除了什么。所以,如果你想删除帖子菜单,那么只需取消注释并离开这部分。
- function hide_menu() {
- /* 控制台 */
- // remove_menu_page( 'index.php' ); // 控制台 + submenus
- // remove_menu_page( 'about.php' ); // WordPress 选单
- remove_submenu_page( 'index.php', 'update-core.php'); // 更新
- /* 删除默认选单 */
- remove_menu_page( 'edit-comments.php' ); // 评论
- remove_menu_page( 'tools.php' ); //工具
- remove_menu_page( 'users.php' ); //用户
- }
- add_action('admin_head', 'hide_menu');
您需要删除任何与外挂相关的选单,先这样复制路
怎么看路径?
那么完整的 URL 是 https://yoursite.com/wp-admin/admin.php?page=elementor
抓住最后一部分“elementor”并将其添加到代码中
如下所示:
- remove_menu_page( 'elementor' );