在WordPress中放置测试/实验性PHP代码的位置?含永久链接代码疑问
WordPress永久链接导出代码的正确使用指南
这段PHP代码的作用是批量导出网站所有文章(post类型)的永久链接,下面针对你的疑问逐一解答:
一、代码的正确放置方式
不推荐直接修改核心文件
绝对不要把代码插入public/index.php,原因有三:
- WordPress更新核心文件时,你的修改会被直接覆盖;
- 每次访问网站任何页面都会执行这段代码,拖慢全站加载速度;
- 所有页面都会强制输出一堆链接,完全破坏正常页面的显示逻辑。
推荐两种安全可行的方式
方式1:自定义页面模板
- 进入当前主题文件夹(路径:
wp-content/themes/你的主题名称),新建一个名为permalink-export.php的文件; - 在文件开头添加页面模板标识,然后粘贴目标代码,完整内容如下:
<?php /* Template Name: 永久链接导出页面 */ get_header(); ?> <?php $args = array('post_type' => 'post', 'posts_per_page' => -1 ); $loop = new WP_Query($args); if( $loop->have_posts() ): while( $loop->have_posts() ): $loop->the_post(); global $post; echo get_permalink($post->ID) . '<br>'; // 加<br>让每个链接单独一行 endwhile; endif; wp_reset_query(); ?> <?php get_footer(); ?>
- 登录WordPress后台,新建一个页面,在右侧「页面属性」的「模板」选项里选择「永久链接导出页面」,发布页面;
- 访问这个新建的页面,就能看到所有文章的永久链接列表了。
方式2:临时独立脚本
- 在WordPress根目录(和
wp-load.php同目录)新建一个名为export-permalinks.php的文件; - 先加载WordPress环境,再粘贴目标代码,完整内容如下:
<?php require_once('wp-load.php'); // 加载WordPress核心函数 $args = array('post_type' => 'post', 'posts_per_page' => -1 ); $loop = new WP_Query($args); if( $loop->have_posts() ): while( $loop->have_posts() ): $loop->the_post(); global $post; echo get_permalink($post->ID) . '<br>'; endwhile; endif; wp_reset_query(); ?>
- 直接访问你的域名+/export-permalinks.php(比如
https://你的域名.com/export-permalinks.php),就能看到导出的链接; - 用完记得删除这个文件,避免暴露给无关人员带来安全风险。
二、你的疑问解答
- 能不能插入public/index.php?:技术上可以,但强烈不建议,后果如前文所述;
- 会不会每次请求页面时运行?:如果放在index.php里,是的,每次访问任何页面都会执行;如果用上面两种推荐方式,只有访问对应的页面或脚本时才会运行;
- 为什么放入常规内容页面显示不完整代码?:WordPress的常规文章/页面会自动过滤PHP代码,不会执行,只会把代码当作普通文本显示,还可能因为内容过滤规则截断部分代码,所以无法正常运行。
内容的提问来源于stack exchange,提问作者oksteve
相关产品推荐
相关产品推荐

