我正在WordPress上创建一个函数来获取robots.txt文件的内容。如果该文件不存在,请使用默认内容创建该文件。我会将它用于我的选项页面。好吧,这是我的代码,它应该可以工作几乎创建文件,但它不会:
function get_robots($robots_file) {
$robots_file = get_home_path() . 'robots.txt'; //The robots file.
$dir = get_home_path(); //The root directory
if(is_file($robots_file)){
$handle = fopen($robots_file, "r");
$robots_content = fread($handle, filesize($robots_file));
fclose($handle);
} else {
$default_content = "User-agent: *\nDisallow:";
chmod($dir, 0777);
$handle = fopen($robots_file, "w+");
$robots_content = fwrite($handle, $default_content);
fclose($handle);
}
chmod($dir, 0744);
return $robots_content;
}
我不确定问题是is_file
,还是fopen($robots_file, "w+"
之后的else
(应该是“r”?)。而且我不确定权限。需要777吗? 744是WordPress根目录的默认值吗?
我使用return
稍后将其用作变量;我想fopen
已经在创建文件了。我是对的吗?
提前致谢。
答案 0 :(得分:2)
首先,我会使用完全不同的功能,您可以使用file_put_contents()
和file_get_contents()
进行此类简单操作。
因此可能更简单的解决方案是:
function get_robots() {
$robots_file = get_home_path() . 'robots.txt'; //The robots file.
if(file_exists($robots_file)){
return file_get_contents($robots_file);
} else {
$default_content = "User-agent: *\nDisallow:";
file_put_contents($robots_file, $default_content);
return $default_content;
}
}
我认为将$robots_file
作为函数参数传递没有任何意义,所以我删除了它。您应该检查此代码是否有效。
我也没有看到您在代码中显示的更改$dir
权限的任何理由。它应该手动设置,你绝对不应该在这样的功能中更改你的根目录权限。
修改强>
因为此功能使用get_home_path()
并且这个功能可能仅在管理面板上可用,所以您必须以不同的方式执行此操作。您可以将以下代码添加到index.php文件的末尾:
function get_robots($path)
{
$robots_file = $path . DIRECTORY_SEPARATOR . 'robots.txt'; //The robots file.
if(file_exists($robots_file)){
return file_get_contents($robots_file);
} else {
$default_content = "User-agent: *\nDisallow:";
file_put_contents($robots_file, $default_content);
return $default_content;
}
}
get_robots(getcwd());
(当然,如果您愿意,可以将get_robots()
功能移动到其他文件中。
但是你应该考虑这是否是最佳方法。每次查看您的网站时都会运行此功能,而且浪费很少(实际上您可能只想创建一次robots.txt文件)。例如,您可以创建robots.php
文件,如果要运行它,可以运行http://yourwordpressurl/robots.php
。这当然是你的电话。