WordPress Ajax 翻页获取内容

<!-- jQuery -->
        <script src="//cdn.bootcss.com/jquery/1.11.1/jquery.js"></script>

        <script type="text/javascript">
            // 点击按钮
        $(document).on("click",".ajax",function(){
            window.history.pushState({ //添加访问历史
                time: new Date().getTime()
            },
            "", $(this).attr("href"));
            $.ajax({
                url: $(this).attr("href"),
                //AJAX请求的是链接指向的页面
                success: function(data) {
                    $(".list").replaceWith($(data).find(".list")); //将结果替换到当前页面
                    document.title = $(data).filter("title").text(); //更改页面标题
                }
            });
            return false

        });


        </script>

 

WordPress 调用文章并使用 Transients 进行缓存

ransients 是什么?

Transients 中文直译为“瞬变、临时工”,是 WordPress 中用于存储缓存和临时数据的 API,以 “key-value” 的形式保存数据,你可以给它设置一个到期时间,时间过后清除储存的数据。

默认情况下,Transients 被利用 Options API 储存在 wp_options 表,但是每次储存会生成两条记录,分别是数据内容和它的到期时间。

如果你安装了类似 Memcached 的外部对象缓存插件,WordPress 则会把 Transients 数据直接放到缓存里,提高读取速度。这里演示调用最新文章并使用Transients缓存。

调用最新的文章

新建 new-list.php 文件,文件内容如下:

<?php


if ( false === ( $new_article = get_transient( 'new_article_ST' ) ) ) {
  $new_article = new WP_Query();
  $new_article->query('showposts=10'); //显示数量
 set_transient( 'new_article_ST', $new_article, 60 * MINUTE_IN_SECONDS );

 /**
  * 12 * HOUR_IN_SECONDS
  * 12个小时
  * 
  * 60 * 60
  * 1小时
  * 
  * 60 * 60 * 12
  * 12小时
  MINUTE_IN_SECONDS = 60(秒)
  HOUR_IN_SECONDS = 60 * 分钟秒
  DAY_IN_SECONDS = 24 * 时间小时
  WEEK_IN_SECONDS = 7 * 一天在SECONDS
  MONTH_IN_SECONDS = 30 *每天在SECONDS
  YEAR_IN_SECONDS = 365 *每天在SECONDS
  */

}

  while ($new_article->have_posts()) : $new_article->the_post();
?>
    <ul class="new-article-list">
    <article <?php post_class('new-item');?>>
        <h6><a href="<?php the_permalink();?>"><?php the_title();?></a></h6>
    </article>
    </ul>

<?php endwhile; wp_reset_query();?>

清除缓存

functions.php 文件下添加以下内容,用来清理Transients缓存

//清除-最新文章缓存
function clear_new_article_cache(){
    delete_transient( 'new_article_ST' );//删除 Transients 缓存
}
add_action( 'save_post', 'clear_new_article_cache' );//创建和编辑文章
add_action( 'deleted_post', 'clear_new_article_cache' );//删除文章
add_action( 'created_post_tag', 'clear_new_article_cache' );//创建标签
add_action( 'edited_post_tag', 'clear_new_article_cache' );//编辑标签
add_action( 'delete_post_tag', 'clear_new_article_cache' );//删除标签

调用指定分类下的文章

<?php

if ( false === ( $specific_category_a = get_transient( 'specific_category_a_ST' ) ) ) {

  $specific_category_a = new WP_Query( array(
    'cat'=>4, //分类id为4的分类目录
    'posts_per_page'=>10, //显示10篇文章
    ) );

set_transient( 'specific_category_a_ST', $specific_category_a, 60 * MINUTE_IN_SECONDS );}

  while ($specific_category_a->have_posts()) : $specific_category_a->the_post();
?>
    <ul class="new-article-list">
    <article <?php post_class('new-item');?>>
        <h6><a href="<?php the_permalink();?>"><?php the_title();?></a></h6>
    </article>
    </ul>

<?php endwhile;?>
<?php wp_reset_query();?>

清除缓存

//清除指定分类缓存
function clear_transient_cache(){
    delete_transient( 'specific_category_a_ST' );//删除指定分类缓存
}
add_action( 'save_post', 'clear_transient_cache' );//创建和编辑文章
add_action( 'deleted_post', 'clear_transient_cache' );//删除文章
add_action( 'created_post_tag', 'clear_transient_cache' );//创建标签
add_action( 'edited_post_tag', 'clear_transient_cache' );//编辑标签
add_action( 'delete_post_tag', 'clear_transient_cache' );//删除标签

调用标签云

<?php 
    $tag_cloud = get_transient( 'tag_cloud' );
    if ( false === $tag_cloud || '' === $tag_cloud ){
        $args = array('echo' => false);
        $tag_cloud = wp_tag_cloud( $args );
        set_transient( 'tag_cloud', $tag_cloud, 60*60*12 );
    }
    echo $tag_cloud;
 ?>

继续..

WordPress 获取文章或页面的别名作为小标题

有些设计稿中,我们需要设置一段英文作为页面的小标题,我们可以用自定义自定实现这个功能,但是略显麻烦。

如果WordPress站点使用文章别名作为固定链接,我们就可以获取文章的别名作为小标题使用,还可以让用户有意的去编辑别名,使页面的网站看上去漂亮不少。

WordPress没有为我们提供获取文章别名的函数,我们只有自己动手了,其实很简单,我们来看一下代码。

function the_slug() {
    $post_data = get_post($post->ID, ARRAY_A); #获取当前文章的数据,可以用在循环中或单页面
    $slug = $post_data['post_name']; #post_name 就是文章的slug,post_title才是文章的标题,别弄混了。
    echo ucwords( str_replace("-", " ", $slug) ); #把别名中的横线换成空格,并把单词的第一个字母转换为大写
}

以上代码添加至:functions.php

调用代码

<?php echo the_slug(); ?>

 

关闭WordPress自带在线插件/主题编辑器

WordPress的插件、主题在线编辑功能着实给了我们极大便利,但大家一定遇到过因为手误而导致网站发生致命错误(Fatal Error)的情况。

此时只能通过FTP或是文件管理器重新编辑文件,得不偿失。当各位程序员们在帮助客户构建WordPress网站时,不如多留个心眼将编辑器关闭,或许会减少许多不必要的麻烦。

方法很简单,在 wp-config.php 文件中加上:

define( 'DISALLOW_FILE_EDIT', true );

 

WordPress 文章添加灯箱功能

开始之前

保证网站已调用 jquery1.11.1 以上版本

引入文件

在主题 functions.php 中添加:

/**
 * 灯箱插件
 */
function fancybox_scripts() {
    // 仅在文章页加载
    if (is_single()) {
        wp_enqueue_script('fancybox', '//cdn.bootcss.com/fancybox/3.3.5/jquery.fancybox.min.js',array( 'jquery' ),'1.2', false );
        wp_enqueue_style('fancybox-min', '//cdn.bootcss.com/fancybox/3.3.5/jquery.fancybox.min.css');
    }
}
add_action( 'wp_enqueue_scripts', 'fancybox_scripts' );

为图片添加data属性

在主题 functions.php 中添加:

function fancybox_scriptsb( $content ) {
    global $post;
    $pattern = "/<a(.*?)href=('|\")([A-Za-z0-9\/_\.\~\:-]*?)(\.bmp|\.gif|\.jpg|\.jpeg|\.png)('|\")([^\>]*?)>/i";
    $replacement = '<a$1href=$2$3$4$5$6 data-fancybox="images" ' . $post->ID . '>';
    $content = preg_replace( $pattern, $replacement, $content );
    return $content;
}
add_filter( 'the_content', 'fancybox_scriptsb', 99 );

 

程序员常用单词发音,你读对了吗?

单词 正确发音 含义 演示
access [‘ækses] 一种数据库
admin [‘ædmɪn] 管理员
agile [‘ædʒaɪl] 轻量级
amazon [‘æməzən] 亚马逊
analogy [əˈnælədʒi] 模拟
Angular [‘æŋgjʊlə] 前端JS框架
AJAX [‘eidʒæks] 交互式网页
alias [ˈeɪliəs] 别名
Apache [ə’pætʃɪ] 一个网站服务软件
app [æp] 手机软件
archive [‘ɑːkaɪv] 存档
array [ə’rei] 数组
ASCII [‘æski] 一种编码系统
aspect [‘æspekt] 方向
avatar [‘ævətɑː] 头像
Azure [‘æʒə] 一种云服务
bind [baɪnd] 一个DNS软件
cache [kæʃ] 缓存
Daemon [‘diːmən] 守护进程
deny [dɪ’naɪ] 拒绝
deque [‘dek] 队列
digest [‘dɑɪdʒɛst] 整理
Django [ˈdʒæŋɡoʊ] 一个网站框架
doc [dɒk] 一种文档类型
event [ɪ’vent] 事件
facade [fə’sɑːd] 外观模式
fedora [fɪ’dɔːrə] 一个操作系统
format [‘fɔːmæt] 格式化
Git [ɡɪt] 一个版本控制软件
Haskell [ˈhæskəl] 一个编程语言
height [haɪt] 高度
hidden [‘hɪdn] 隐藏
image [‘ɪmɪdʒ] 图片
implement [‘ɪmplɪm(ə)nt] 实施
integer [‘ɪntɪdʒə] 整数类型
issue [‘ɪʃuː] 发行版本
Java [‘dʒɑːvə] 一个编程语言
lambda [ˈlæmdə] 一种匿名函数
linear [‘lɪnɪə] 线性模型
Linux [‘lɪnəks] 一种操作系统
locale [ləʊ’kɑːl] 地点
main [meɪn] 主要的
margin [‘mɑːdʒɪn] 边缘
matrix [ˈmeɪtrɪks] 母体
maven [‘meɪvn] 一个项目管理软件
Microsoft [‘maikrəusɔft] 微软
module [‘mɒdjuːl] 模块
null [nʌl] 失效的
phantom [‘fæntəm] 虚构
parameter [pə’ræmɪtə] 参数
putty [ˈpʌti] 一个远程控制软件
query [‘kwɪəri] 询问
Qt [kjuːt] 一种开发架构
Realm [relm] 一种移动数据库软件
resolved [rɪ’zɒlvd] 已解决
resort [rɪˈzɔ:t] 求助
retina [‘retɪnə] 一种显示屏
safari [sə’fɑːrɪ] 一个浏览器软件
scheme [skiːm] 一种编程语言
suite [swiːt] 套件
typical [‘tɪpɪkl] 典型的
Ubuntu [ʊ’bʊntʊ] 一种操作系统
variable [‘veəriəbl] 变量
vue [v’ju:] 计算机考试
width [wɪdθ] 宽度
YouTube [‘juː’tjuːb] 一个视频网站

入驻网易云课堂老师,申请还是比较简单,在申请过程中个人简介和授课目的写的不是很明确,被驳回了一次,以后会分享一些WordPress的经验。希望可以坚持下去,哈哈。

今天终于可以跑步了,膝盖的疼痛折磨了我快两个月。从2021年10月份的国庆节到2022年的1月21号。

导致这次膝盖疼痛的原因:就是因为之前工作太繁忙挤出时间跑步,不注重拉伸热身,导致的肌肉筋膜僵硬。

接下来的半年里我会慢慢恢复训练,争取在2022年全马跑进三小时。