当在WordPress中以编程方式创建帖子时,具有wp_insert_post的可执行php文件是否必须位于wp-includes文件夹中?

时间:2017-09-29 16:00:52

标签: php wordpress

我在以下背景下提出这个问题:

我想使用wp_insert_post()以编程方式在Wordpress中创建帖子。

我最初在wp-includes文件夹中保存了可执行的php文件,但我无法从浏览器运行php文件,为方便起见,我想这样做。

我将可执行的php文件保存在/public_html/folder/executable_file.php并从Chrome浏览器运行此代码:

<?php
    $postContent = 'test post';
    $title = 'test title';

    // Create post object
    $my_post = array(
        'post_title'    => $title,
        'post_content'  => $postContent,
        'post_status'   => 'publish',
        'post_author'   => 1,
        'post_category' => 'uncategorized'
    );

    // Insert the post into the database
    wp_insert_post( $my_post );

    echo 'At least the file executed :/';
?>

浏览器返回

&#34;此页面无效

website.com目前无法处理此请求。 HTTP ERROR 500&#34;

我尝试了上述代码的几种变体,但有不同的错误。我怀疑发生这些错误是因为代码是从另一个文件夹运行的,因为codex,因为尽管Wordpress文档没有明确说明,但post.php示例位于wp-includes中。 (https://developer.wordpress.org/reference/functions/wp_insert_post/

TL,博士; 可以从wp-includes文件夹外部运行wp_insert_post吗?

感谢您通过提供此答案来节省时间。

2 个答案:

答案 0 :(得分:0)

对于我怀疑的,它为你提供了http错误代码500,因为它无法找到wp_insert_post函数,因为你在调试一个wordpress函数时甚至没有初始化wordpress,因为你试图直接在wordpress之外运行一个函数。

即使把它放在wp_includes中也可能不会胜任。

你必须保持wordpress。也就是说,如果您使用这些功能,请确保它是在插件或主题上编写的。但是,直接运行该文件仍然无法正常工作。你必须让wordpress初始化,所以要么你通过你自己建立的API来调用它,要么只运行wordpress网站。

Refer to the WP codex for hooks and filter you can use

如果这清除了任何结果,请告诉我。如果它没有,请告诉我们你想要做什么,为什么你想在wordpress之外运行它。

答案 1 :(得分:0)

如果我理解正确,您正试图在Wordpress范围之外运行此脚本。你不能。 wp_insert_post是Wordpress的核心功能,依赖于Wordpress的许多核心方面(如$wpdb),因此您必须在Wordpress的范围内才能使用WP函数运行脚本。这就是你得到致命错误的原因。

此外,您不需要(并且您不应该)将文件放在/wp-includes/目录中。执行此操作的正确方法是设置自定义主题并将您的代码放在functions.php文件中,然后挂钩到Wordpress提供的许多操作挂钩之一。像这样:

// in your functions.php file, located at /wp-content/themes/your-theme/

function so46492768_insert_post() {
    $postContent = 'test post';
    $title = 'test title';

    // Create post object
    $my_post = array(
        'post_title'    => $title,
        'post_content'  => $postContent,
        'post_status'   => 'publish',
        'post_author'   => 1,
        'post_category' => 'uncategorized'
    );

    // Insert the post into the database
    wp_insert_post( $my_post );

    echo 'At least the code executed :/';
}
add_action('init','so46492768_insert_post');