我在以下背景下提出这个问题:
我想使用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吗?
感谢您通过提供此答案来节省时间。
答案 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');