创建robots.txt文件的最佳代码位置

时间:2014-07-18 作者:Unix

我正在使用选项树框架来选择我的主题。现在我想添加创建和编辑机器人的选项。txt文件。首先,我具有获取文件内容或使用默认内容创建文件的功能;这是:

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());
如果我在上使用此功能functions.php, 它将在每次加载页面时运行,这是一个小小的浪费。我计划在上使用此功能robots.php 然后我会在需要的时候给它打电话。但是,当这是最好的时刻时,代码运行一次的最佳位置在哪里?

例如,每次加载选项页时?编辑:不,它不工作,因为选项设置包括在functions.php 因此,它会在每个页面视图上创建文件。

2 个回复
SO网友:Rarst

您低估了WordPress中机器人文件处理的复杂性。存在物理文件是两种情况之一。

如果在模板加载期间物理文件不存在is_robots() 进行检查,在阳性情况下do_robots() 动态运行、生成和服务“文件”。

继续前进,创造robots.txt 在任意情况下,站点很可能会破坏利用虚拟文件及其挂钩的相关代码。

回答直接的问题-我不确定这个功能要实现哪些目标,所以很难判断什么最适合计时。简单的做法可能是在访问主题的选项页面上运行它(就像访问本机永久链接设置执行永久链接刷新一样)。

SO网友:Mark Kaplun

这个问题太详细了。不管你想做什么,如果你只想“一次”运行代码,最好的时间就是激活主题。可能是这样的

if ( is_admin() && isset($_GET[\'activated\'] ) && $pagenow == \'themes.php\' ) { get_robots(); }

but: 这是一个很好的例子,为什么主题不应该触及fronend设计之外的功能,因为很容易看出你不了解机器人是如何工作的。txt由wordpress生成,您可能会破坏专用插件的功能。实际上,您的代码不太可能在任何具有最低安全设置的站点上工作。

结束

相关推荐

Can't add options to db

我正试图为我的wordpress网站创建一个非常简单的选项页面,其中只包含一个选项-货币的兑换率。我有以下代码:add_action(\'admin_init\', \'currency_options_set\'); add_action( \'admin_menu\', \'admin_menu\' ); function admin_menu () { add_options_page( \'Currency Options\',\'Currency Opt