三十而立

wordpress下的文章

一般用wordpress编辑器,有个别常用的按钮在第2行(默认隐藏,需要点击才打开),这样的话感觉有些麻烦。

根据用户体验原则,功能类似的按钮,常用的按钮应该出现在一起,这一点WordPress可以学习一下Gmail的按钮组织方式。下面的方法不但可以添加TinyMCE按钮,还可以任意排列各个TinyMCE按钮出现的顺序

把以下代码根据自己需要增减修改后,再加入当前主题的 functions.php 文件。

// 编辑器第一行
function cw_mce_buttons_1( $buttons ) {
    $buttons = array(
        'bold',
        'italic',
        'underline',
        'strikethrough',
        'bullist',
        'numlist',
        'blockquote',
        'hr',
        'alignleft',
        'alignright',
        'aligncenter',
        'alignjustify',
        'subscript',
        'superscript',
        'link',
        'unlink',
        'wp_more',
        'wp_adv'
    );
    return $buttons;
}
add_filter( 'mce_buttons', 'cw_mce_buttons_1' );

//编辑器第二行
function cw_mce_buttons_2( $buttons ) {
    $buttons = array(
        'formatselect',
        'fontsizeselect',
        'forecolor',
        'backcolor',
        'charmap',
        'pastetext',
        'removeformat',
        'spellchecker',
        'fullscreen',
        'undo',
        'redo',
        'indent',
        'outdent',
        'cleanup',
        'charmap',
        'wp_help',
        'code',
        'sub',
        'sup',
        'anchor',
    );
    return $buttons;
}
add_filter( 'mce_buttons_2', 'cw_mce_buttons_2' );

我改成了这样:
微信截图_20190328224228.png

首先我们需要知道为什么要给WordPress分类目录和页面添加斜杠。

分类目录顾名思义就是一个目录,众所周知,目录链接应该像这样 :

http://www.dmeng.net/category/wordpress-theme-development/

但有些时候因为我们的伪静态规则设置问题在WordPress分类目录后并没有斜杠 / ,会出现:

http://www.dmeng.net/category/wordpress-theme-development

像这样的情况。

这对搜索引擎是不友好的,因为带有斜杠时搜索引擎能及时识别出这是一个目录,而没有斜杠时则要分析。(就现在这行业水平,误判是常有的事,有做留意SEO的童鞋都知道。)

所以,我们需要给WordPress分类目录和页面添加斜杠。

我们只需要把以下代码加在主题目录的 functions.php 中即可:

wordpress给分类和tag尾部加斜线 /

// 分类目录地址后添加斜杠star

function nice_trailingslashit($string, $type_of_url) {
    if ( $type_of_url != 'single' && $type_of_url != 'page' && $type_of_url != 'single_paged' )
        $string = trailingslashit($string);
    return $string;
}
add_filter('user_trailingslashit', 'nice_trailingslashit', 10, 2);

// 分类目录地址后添加斜杠over

经测试wordpress5.1版本对分类/tag仍然有效(2019年3月27日)

参考资料:http://zmingcx.com/add-slash-catalog.html

阿里云提示:wordpress /wp-includes/http.php文件中的wp_http_validate_url函数对输入IP验证不当,导致黑客可构造类似于012.10.10.10这样的畸形IP绕过验证,进行SSRF;

修复方法:

打开wp-includes 中的 http.php 大约553 行(编辑器不同,行数可能不同)

找到

preg_match('#^(([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)\.){3}([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)$#', $host)

改成

preg_match('#^(([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d|0+\d+)\.){3}([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)$#', $host)

原文:https://blog.csdn.net/dclnet/article/details/81869078

wordpress 文章内容输出:


<?php while (have_posts()) : the_post(); ?>   //循环
<?php the_content(); ?> //输出内容
<?php endwhile; ?>  //循环结束                

WordPress使用MySQL数据库。作为一个开发者,我们有必要掌握WordPress数据库的基本构造,并在自己的插件或主题中使用他们。

截至WordPress3.0,WordPress一共有以下11个表。这里加上了默认的表前缀 wp_ 。

wp_commentmeta:存储评论的元数据
wp_comments:存储评论
wp_links:存储友情链接(Blogroll)
wp_options:存储WordPress系统选项和插件、主题配置
wp_postmeta:存储文章(包括页面、上传文件、修订)的元数据
wp_posts:存储文章(包括页面、上传文件、修订)
wp_terms:存储每个目录、标签
wp_term_relationships:存储每个文章、链接和对应分类的关系
wp_term_taxonomy:存储每个目录、标签所对应的分类
wp_usermeta:存储用户的元数据
wp_users:存储用户

在WordPress的数据库结构中,存储系统选项和插件配置的wp_options表是比较独立的结构,在后文中会提到,它采用了key-value模式存储,这样做的好处是易于拓展,各个插件都可以轻松地在这里存储自己的配置。

post,comment,user 则是三个基本表加上拓展表的组合。以wp_users为例,wp_users已经存储了每个用户会用到的基本信息,比如 login_name、display_name、 password、email等常用信息,但如果我们还要存储一些不常用的数据,最好的做法不是去在表后加上一列,去破坏默认的表结构,而是将数据存在wp_usermeta中。wp_usermeta这个拓展表和wp_options表有类似的结构,我们可以在这里存储每个用户的QQ号码、手机号码、登录WordPress后台的主题选项等等。

比较难以理解的是term,即wp_terms、wp_term_relationships、wp_term_taxonomy。在WordPress的系统里,我们常见的分类有文章的分类、链接的分类,实际上还有TAG,它也是一种特殊的分类方式,我们甚至还可以创建自己的分类方法。WordPress将所有的分类及分类方法、对应结构都记录在这三个表中。wp_terms记录了每个分类的名字以及基本信息,如本站分为“WordPress开发”、“WPCEO插件”等,这里的分类指广义上的分类,所以每个TAG也是一个“分类”。wp_term_taxonomy记录了每个分类所归属的分类方法,如“WordPress开发”、“WPCEO插件”是文章分类(category),放置友情链接的“我的朋友”、“我的同事”分类属于友情链接分类(link_category)。wp_term_relationships记录了每个文章(或链接)所对应的分类方法。

庆幸的是,关于term的使用,WordPress中相关函数的使用方法还是比较清晰明了,我们就没必要纠结于它的构造了。

在上文中我们已经介绍了WordPress数据库中各个表的作用,本文将继续介绍每个表中每个列的作用。WordPress官方文档已经有比较详细的表格,本文仅对常用数据进行介绍。

wp_commentmeta
meta_id:自增唯一ID
comment_id:对应评论ID
meta_key:键名
meta_value:键值

wp_comments
comment_ID:自增唯一ID
comment_post_ID:对应文章ID
comment_author:评论者
comment_author_email:评论者邮箱
comment_author_url:评论者网址
comment_author_IP:评论者IP
comment_date:评论时间
comment_date_gmt:评论时间(GMT+0时间)
comment_content:评论正文
comment_karma:未知
comment_approved:评论是否被批准
comment_agent:评论者的USER AGENT
comment_type:评论类型(pingback/普通)
comment_parent:父评论ID
user_id:评论者用户ID(不一定存在)

wp_links
link_id:自增唯一ID
link_url:链接URL
link_name:链接标题
link_image:链接图片
link_target:链接打开方式
link_description:链接描述
link_visible:是否可见(Y/N)
link_owner:添加者用户ID
link_rating:评分等级
link_updated:未知
link_rel:XFN关系
link_notes:XFN注释
link_rss:链接RSS地址

wp_options
option_id:自增唯一ID
blog_id:博客ID,用于多用户博客,默认0
option_name:键名
option_value:键值
autoload:在WordPress载入时自动载入(yes/no)

wp_postmeta
meta_id:自增唯一ID
post_id:对应文章ID
meta_key:键名
meta_value:键值

wp_posts
ID:自增唯一ID
post_author:对应作者ID
post_date:发布时间
post_date_gmt:发布时间(GMT+0时间)
post_content:正文
post_title:标题
post_excerpt:摘录
post_status:文章状态(publish/auto-draft/inherit等)
comment_status:评论状态(open/closed)
ping_status:PING状态(open/closed)
post_password:文章密码
post_name:文章缩略名
to_ping:未知
pinged:已经PING过的链接
post_modified:修改时间
post_modified_gmt:修改时间(GMT+0时间)
post_content_filtered:未知
post_parent:父文章,主要用于PAGE
guid:未知
menu_order:排序ID
post_type:文章类型(post/page等)
post_mime_type:MIME类型
comment_count:评论总数

wp_terms
term_id:分类ID
name:分类名
slug:缩略名
term_group:未知

wp_term_relationships
object_id:对应文章ID/链接ID
term_taxonomy_id:对应分类方法ID
term_order:排序

wp_term_taxonomy
term_taxonomy_id:分类方法ID
term_id:taxonomy:分类方法(category/post_tag)
description:未知
parent:所属父分类方法ID
count:文章数统计

wp_usermeta
umeta_id:自增唯一ID
user_id:对应用户ID
meta_key:键名
meta_value:键值

wp_users
ID:自增唯一ID
user_login:登录名
user_pass:密码
user_nicename:昵称
user_email:Email
user_url:网址
user_registered:注册时间
user_activation_key:激活码
user_status:用户状态
display_name:显示名称

加/的意义在于让这个标签或分类成为一个目录,拥有更高的权重,利于seo。

在主题function.php中加入

function nice_trailingslashit($string, $type_of_url) {
if ( $type_of_url != 'single' )
$string = trailingslashit($string);
return $string;
}
add_filter('user_trailingslashit', 'nice_trailingslashit', 10, 2);

wordpress自带的链接太过麻烦,4.8以后还得开启,还不如直接写在footer中管理更方便,就是切记不要随意覆盖模板。但加在footer中会有个问题:整站都展示友情链接了,这对于优化和美观都不利。
wordpress有个是否首页的判断,只要判断是首页则显示,不是首页则不显示,就可以完美解决,而且代码量少,把以下代码加在footer中即可:

<?php if ( (is_home() || is_front_page()) && !is_paged() ) { ?>
    <div id='link'><span>友情链接:</span>
<li><a href="#">1111</a></li>
<li><a href="#">2222</a></li>
    </div>
<?php } ?>

css自己改成符合主题的即可,就几行代码。

在使用wp_head() 函式时,WordPress会自动生成一个多余的.recentcomments样式,没什么用,去掉了代码更简洁!

把这段代码加到主题的functions.php文件中即可:

/移除头部多余.recentcomments样式
function Fanly_remove_recentcomments_style() {
    global $wp_widget_factory;
    remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style' ) );
}
add_action( 'widgets_init', 'Fanly_remove_recentcomments_style' );

内容来自泪雪博客

WordPress默认情况下的标签页(tag)、分类目录(category),是没有canonical标签的。有时候出于需要,想给tag和category都加上canonical标签,那么下面的代码就可以完美解决你的需求。

先保证你的主题相关主题文件中包含了<?php wp_head(); ?>代码(通常是在header.php文件中),然后把下面代码加入到主题的funshion.php文件中即可。

 //完美的canonical
    remove_action( 'wp_head', 'rel_canonical' );
    function my_rel_canonical() {
    global $post;
    if (is_single() || is_page()) {
    echo "<link rel=\"canonical\" href=\"" . get_permalink( $post->ID ) . "\" />\n";
    }
    if (is_home() && is_paged()) {
    echo "<link rel=\"canonical\" href=\"".home_url("/")."\" />\n";
    }
    if (is_category() || is_category() && is_paged()) {
    echo "<link rel=\"canonical\" href=\"".get_category_link(get_query_var('cat'))."\" />\n";
    }
    if (is_tag() || is_tag() && is_paged()) {
    echo "<link rel=\"canonical\" href=\"".get_term_link(get_query_var('tag'), 'post_tag')."\" />\n";
    }
    if (is_search() || is_search() && is_paged()) {
    echo "<link rel=\"canonical\" href=\"".get_search_link(get_query_var('search'))."\" />\n";
    }
    if (is_author()) {
    echo "<link rel=\"canonical\" href=\"".get_option('home')."\" />\n";
    }
    if (is_date()) {
    echo "<link rel=\"canonical\" href=\"".get_option('home')."\" />\n";
    }
    }
    add_action('wp_head', 'my_rel_canonical');

今天想给一个wordpress做的网站添加下相关文章,这样更有利于搜索引擎的蜘蛛爬取,wordpress用插件会影响速度,所以就直接在代码中解决,不用插件。

singel.php中添加下列代码即可:

<!-- 相关文章 -->
                        <ul id="cat_related"><h3>您可能关注:</h3>
    <?php
    global $post;
    $cats = wp_get_post_categories($post->ID);
    if ($cats) {
        $args = array(
              'category__in' => array( $cats[0] ),
              'post__not_in' => array( $post->ID ),
              'showposts' => 6,
              'caller_get_posts' => 1
          );
      query_posts($args);
      if (have_posts()) {
        while (have_posts()) {
          the_post(); update_post_caches($posts); ?>
      <li>&raquo; <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
    <?php
        }
      }
      else {
        echo '<li>&raquo; 暂无相关文章</li>';
      }
      wp_reset_query();
    }
    else {
      echo '<li>>&raquo; 暂无相关文章</li>';
    }
    ?>
    </ul>
   <!--  相关结束 -->

补充一句:以上代码是获取同分类下的文章,按时间排序。
具体样式,自己可以在style.css中再加一点

有时候会忘记wordpress密码,通过mysql修改Wordpress密码,执行SQL命令:
进入到 phpmyadmin 或者 服务器mysql,随后执行如下sql语句:

update wp_users set user_pass=md5("123456") where user_login='admin';
//123456是你的Wordpress新密码,admin是管理员账号(可替换)。执行完了命令后,你就可以用密码123456来登录Wordpress了

一些wordpress用户有时会遇到如下问题:

WordPress后台不显示其他主题,明明上传了好几个主题,但后台中只有一个主题?

出现这种WordPress主题无法识别问题的原因:服务器环境禁用了 scandir函数,导致WordPress无法正常缓存主题。
解决方法如下,依次执行:

//查看PHP.INI在哪里
find / -name 'php.ini'  

//打开php.ini文件;
vi /usr/local/php/etc/php.ini  

//开始查找“scandir”,按enter确认;
/scandir  

//编辑模式,删掉scandir(如果按错了,按住ctrl+del可删除)
i

//保存
:wq 

//重启服务器,军哥的lnmp
lnmp restart