Windows版本Apache的下载页面,收藏以备用:https://www.apachelounge.com/download/
作者: admin
-
PHP生成随机符点数
可以使用下面的代码生成随机的符点数:
<?php function randFloat($min = 0, $max = 1) { return round($min + mt_rand() / mt_getrandmax() * ($max - $min),2); }
-
给wordpress添加归档页面
今天给另一个网站增加一个文章归档功能,步骤如下:
1、复制page.php,改名为archive.php,并在最顶部添加以下代码,告诉wordpress这是一个模板
/* Template Name: Archives */
2、把page.php中间输出内容的部分换成我们的归档代码。
完整代码如下:
<?php /* Template Name: Archives */ get_header(); ?> <style> .monthly-posts { list-style-type: none; /* 去掉默认的列表样式 */ padding-left: 0; /* 去掉外边距 */ } .monthly-posts li { margin-left: 20px; /* 为每个文章项添加左侧缩进 */ line-height: 1.8; /* 增加行高让显示更清晰 */ margin-left: 20px; line-height: 1.6; margin-bottom: 5px; /* 增加每个列表项之间的间距 */ } .monthly-posts li a { font-weight: bold; /* 强调文章标题 */ } .monthly-posts li span.post-date { font-size: 0.9em; color: #666; /* 设置日期的颜色 */ margin-left: 10px; } /* 针对 <p> 标签样式进行调整 */ .monthly-posts p.post-excerpt { font-size: 1em; color: #444; /* 设置摘要文本颜色 */ margin-top: 5px; line-height: 1.6; margin-left: 40px; /* 添加左侧缩进 */ } h3 { font-size: 1.2em; color: #333; margin-top: 20px; margin-bottom: 10px; } .post-count { margin-top: 30px; font-size: 1.2em; font-weight: bold; color: #333; text-align: center; } </style> <div id="primary" class="site-content"> <div id="content" role="main"> <?php // 获取按月归档的日期 $archives = $wpdb->get_results(" SELECT DISTINCT YEAR(post_date) AS year, MONTH(post_date) AS month FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date DESC "); // 遍历每个月的归档 if ($archives) : foreach ($archives as $archive) : // 获取当前月份的文章 $year_month = $archive->year . '-' . str_pad($archive->month, 2, '0', STR_PAD_LEFT); // 设置自定义查询来列出该月的文章 $query = new WP_Query(array( 'year' => $archive->year, 'monthnum' => $archive->month, 'posts_per_page' => -1 // -1 表示列出该月所有文章 )); // 如果该月有文章,显示月份和文章列表 if ($query->have_posts()) : echo '<h3>' . $archive->year . '年' . $archive->month . '月</h3>'; echo '<ul class="monthly-posts">'; while ($query->have_posts()) : $query->the_post(); // 获取文章的发布日期 $post_date = get_the_date('Y年m月d日'); // 修改为你想要的日期格式 echo '<li><a href="' . get_permalink() . '" title="' . get_the_title() . '">' . get_the_title() . '</a> <span class="post-date">- ' . $post_date . '</span></li>'; // 输出文章摘要 echo '<p class="post-excerpt">' . get_the_excerpt() . '</p>'; endwhile; echo '</ul>'; endif; // 重置查询 wp_reset_postdata(); endforeach; else : echo '<p>没有按月归档的文章。</p>'; endif; ?> <?php // 获取已发布文章的数量 $post_count = wp_count_posts()->publish; ?> <div class="post-count"> <p>总共写了 <?php echo $post_count; ?> 篇文章。</p> </div> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?>
3、把archive.php传到服务器主题目录下,并新建一个页面,在该新建页面里面选择模板,选择Archives,保存即可。
-
PHP解决http_build_query中¬被转义的问题
在开发一个支付项目时,遇到PHP把
¬
给转义了,可以通过htmlspecialchars再转一次就可以了:<?php $vars = array( 'book' => 'humpty', 'newspaper' => 'onion', 'note' => 'not working'); $query = http_build_query($vars); $fixed_query = htmlspecialchars($query, ENT_QUOTES, 'UTF-8');
该段代码的功能是
http_build_query
根据数组产生一个urlencode
之后的请求字符串。 -
PHP创建日志文件
在开发,经常需要使用日志文件进行调试和排错,PHP可以使用下面的代码简单的创建一个日志文件:
<?php file_put_contents('log.txt', date('Y-m-d H:i:s', time()) . " 签名串:" . $this->getSignContent($temp) . "\r\n", FILE_APPEND);
-
PHP删除指定路径下的指定后缀的文件
有时,我们需要使用PHP对文件进行操作,例如删除目录下指定后缀的文件,代码如下:
<?php /** *@param $path文件夹绝对路径 $file_type待删除文件的后缀名 *return void */ function clearn_file($path, $file_type = 'bak') { //判断要清除的文件类型是否合格 if (!preg_match('/^[a-zA-Z]{2,}$/', $file_type)) { return false; } //当前路径是否为文件夹或可读的文件 if (!is_dir($path) || !is_readable($path)) { return false; } //遍历当前目录下所有文件 $all_files = scandir($path); foreach ($all_files as $filename) { //跳过当前目录和上一级目录 if (in_array($filename, array(".", ".."))) { continue; } //进入到$filename文件夹下 $full_name = $path . '/' . $filename; //判断当前路径是否是一个文件夹,是则递归调用函数 //否则判断文件类型,匹配则删除 if (is_dir($full_name)) { clearn_file($full_name, $file_type); } else { preg_match("/(.*)\.$file_type/", $filename, $match); if (!empty($match[0][0])) { echo $full_name; echo '<br>'; unlink($full_name); } } } }
测试代码:
$folderpath = $_SERVER["DOCUMENT_ROOT"] . "/abc";//要操作的目录 $deltype = array('gif', 'jpg', 'pdf'); foreach ($deltype as $file_type) { clearn_file($folderpath, $file_type); }
我的实际项目中的代码:删除当前文件所在目录下的tmp后缀的文件:
clearn_file(dirname(__FILE__), 'tmp');
-
PHP7.4 报错:Trying to access array offset on value of type null
主要原因是版本7.4以后PHP解析器会对null类型的下标访问直接报错。
解决办法:把PHP版本换成PHP7.3🤣。
如果使用Laravel框架,可以像下面这样修改:
app/Providers/AppServiceProvider.php代码文件中
boot
方法里面添加error_reporting (E_ERROR);
这样就屏蔽了所有错误,不是很推荐。有条件还是改回PHP7.3吧。
-
PHP实现上传文件
HTML表单里面如果需要上传文件,那么对应的PHP处理上传的代码如下 :
<?php if(isset($_FILES['image'])){ $errors= array(); $file_name = $_FILES['image']['name']; $file_size =$_FILES['image']['size']; $file_tmp =$_FILES['image']['tmp_name']; $file_type=$_FILES['image']['type']; $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); $extensions= array("jpeg","jpg","png"); if(in_array($file_ext,$extensions)=== false){ $errors[]="extension not allowed, please choose a JPEG or PNG file."; } if($file_size > 2097152){ $errors[]='File size must be excately 2 MB'; } if(empty($errors)==true){ move_uploaded_file($file_tmp,"images/".$file_name); echo "Success"; }else{ print_r($errors); } }
如果上传的文件比较大,php.ini 需要配置
upload_max_filesize
和post_max_size
。 -
WordPress 禁止更新大版本,只允许小版本更新
如果不希望 WordPress 自动更新大版本,同时也不想在后台更新页看到新版本的更新提醒,可以在主题的functions.php里面添加如下代码:
// 允许自动更新小版本,但禁止大版本更新 add_filter( 'allow_major_auto_update', '__return_false' ); add_filter( 'allow_minor_auto_update', '__return_true' ); // 禁止后台更新页面显示新版本更新提示 add_filter( 'site_transient_update_core', function( $value ) { if ( is_object( $value ) && isset( $value->updates ) ) { foreach ( $value->updates as $key => $update ) { // 移除新版本更新提示 if ( version_compare( $update->current, get_bloginfo( 'version' ), '>' ) ) { unset( $value->updates[ $key ] ); } } } return $value; } );
加上这段代码后,如果有新的小版本,那么 WordPress 会默默地自动更新,不管是大版本还是小版本,都不会在后台更新页进行提示,以免干扰用户。
科普一下WordPress的版本规则,例如版本6.6.2,6.6是一个大版本,.2是一个小版本,禁止大版本更新就是禁止从6.6升级到6.7或7.x;允许小版本更新,就是允许从6.6.2升级到6.6.3这样的。
参考链接:https://make.wordpress.org/core/handbook/about/release-cycle/version-numbering/