从哪里调用wp_Insert_User()和wp_Insert_POST()?

时间:2016-01-24 作者:Micheal Johnson

我正在尝试使用wp\\u insert\\u user()和wp\\u insert\\u post()函数批量插入多个用户和帖子。问题是,我找不到任何关于应该从何处调用这些函数的明确指示。一切都在谈论“钩子”,但我不想钩住任何东西;我希望能够访问web浏览器中的特定URL并进行导入。我应该把这些电话放在一个特殊的主题文件中吗?在WordPress安装的根目录中?如何在正确的上下文中触发函数调用?

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

我不知道为什么要排除挂钩作为可能的解决方案,因为我仍然认为这是最好的选择

选项1-如果没有挂钩,则要使用的特定URL必须存在,并且不能返回404。我可能认为您最好的选择是创建一个私有页面,并将代码直接添加到将用于该页面的指定模板中。然后,当您访问该特定页面时,您的代码将执行。

嗯,这真是个糟糕的解决方案

选项2-使用挂钩在我看来,这将是最好的选项

OPTION 2.1

在插件中添加代码,并将代码挂接到register_activation_hook 钩这将确保当插件被激活时,您的代码将运行,而不是在此后每次加载页面时再次运行

OPTION 2.2

在主题中添加代码,并将其挂接到after_theme_switch 钩这将在您激活主题后立即运行。

OPTION 2.3

通过使用条件标记,您可以专门针对特定页面,然后钩住函数,以便在访问特定URL时执行代码。您可以使用wp 钩住这里wp 执行时,设置条件标记。您还可以使用template_redirect 钩子,这是许多人喜欢的钩子。

在这三种选择中,它们是选择IMHO的最佳路线。

重要提示:

您应该构建您的系统,这样,如果您不小心或故意运行代码两次,那么在第二次运行时它将不会起任何作用。最好的选择可能是在选项中保存一些内容,然后在执行代码之前检查特定值。

EXAMPLE:

add_action( \'wp\', function () // Can also use template_redirect as $tag
{
    // Make sure we target a specific page, if not our page, bail
    if ( !is_page( \'my selected page\' ) ) // Use any conditional tag here to your specific needs
        return;

    // Chech if our custom option exist with a specific value, if yes, bail
    if ( true == get_option( \'my_custom_option\' ) )
        return;

    /** 
     * This is where you should do all your work as we are on the selected page
     * and our option does not exist with our prefered value. Just a few notes here 
     * which you should consider
     * - Before inserting users, make sure that the user does not exist yet
     * - Before inserting posts make sure as to not duplicate posts
     */

     // Run all your code here to insert posts and users

    /**
     * Create and update our option with the value of `true`. 
     * This will ensure that our code will be executed once
     */
    update_option( \'my_custom_option\', \'true\' );
});

相关推荐