来自 functions.php 的远程请求无效
remote request from functions.php is not working
我正在为 wordpress 中的 post_updated 操作编写自定义函数,如下所示:
function post_update_trigger($post_ID, $post_after, $post_before){
if($post_after->post_status == "publish" || $post_after->post_status == "trash" ){
$url="https://myremoteurl.com/feed/blogAPI";
$response = wp_remote_post($url,array(
'method' => 'POST',
'timeout' => 45,
'redirection' => 5,
'httpversion' => '1.0',
'blocking' => true,
'headers' => array(),
'body' => $postFields,
'cookies' => array()
));
if ( is_wp_error( $response ) ) {
$error_message = $response->get_error_message();
echo "Something went wrong: $error_message";exit;
} else {
echo 'Response:<pre>';
print_r( $response );exit;
echo '</pre>';
}
}
}
add_action( 'post_updated', 'post_update_trigger', 10, 3 );
我尝试了 post 人的 post 请求。一切似乎都很好并且可以正常工作。除了 wp_remote_post,我也试过 CURL。
我做错了什么。
查看我的 post 人工请求:
PS: 该博客位于项目根目录的子文件夹中。这是导致问题的原因吗?
错误是由于请求与遥控器相同的来源,即我的控制器位于 https://dev.kidengage.com/feed/blogAPI。
但是我的 wordpress 位于 https://dev.kidengage.com/blog.
的根目录的子文件夹中
所以使用 wp_remote_post 会导致奇怪的响应。
我最终使用下面的方法将数组直接从 wordpress 存储到我的根正在使用的另一个数据库。
global $wpdb;
$newdb = new wpdb('username','password','dagtabasename','localhost');
$newdb->show_errors();
$postExist= $newdb->get_row("select * from blogMaster where postID=$post_ID");
if(empty($postExist)){
$insert=array(
"postID" => $post_ID,
"postTitle" => $post_after->post_title,
"postContent" => $post_after->post_content ,
"postExcerpt" => $post_after->post_excerpt,
"postType" => $post_after->post_type,
"postGuid" => $post_after->guid ,
"postPermLink" => $permLink,
"postThumb" => $thumbLarge,
"postAuthorName" => $authorName,
"postAuthorPic" => $authorURL ,
"postStatus" => $post_after->post_status,
"postDate" => $post_after->post_date,
"postModified" => $post_after->post_modified
);
$newdb->insert("blogMaster",$insert);
}
我正在为 wordpress 中的 post_updated 操作编写自定义函数,如下所示:
function post_update_trigger($post_ID, $post_after, $post_before){
if($post_after->post_status == "publish" || $post_after->post_status == "trash" ){
$url="https://myremoteurl.com/feed/blogAPI";
$response = wp_remote_post($url,array(
'method' => 'POST',
'timeout' => 45,
'redirection' => 5,
'httpversion' => '1.0',
'blocking' => true,
'headers' => array(),
'body' => $postFields,
'cookies' => array()
));
if ( is_wp_error( $response ) ) {
$error_message = $response->get_error_message();
echo "Something went wrong: $error_message";exit;
} else {
echo 'Response:<pre>';
print_r( $response );exit;
echo '</pre>';
}
}
}
add_action( 'post_updated', 'post_update_trigger', 10, 3 );
我尝试了 post 人的 post 请求。一切似乎都很好并且可以正常工作。除了 wp_remote_post,我也试过 CURL。
我做错了什么。
查看我的 post 人工请求:
PS: 该博客位于项目根目录的子文件夹中。这是导致问题的原因吗?
错误是由于请求与遥控器相同的来源,即我的控制器位于 https://dev.kidengage.com/feed/blogAPI。
但是我的 wordpress 位于 https://dev.kidengage.com/blog.
的根目录的子文件夹中所以使用 wp_remote_post 会导致奇怪的响应。
我最终使用下面的方法将数组直接从 wordpress 存储到我的根正在使用的另一个数据库。
global $wpdb;
$newdb = new wpdb('username','password','dagtabasename','localhost');
$newdb->show_errors();
$postExist= $newdb->get_row("select * from blogMaster where postID=$post_ID");
if(empty($postExist)){
$insert=array(
"postID" => $post_ID,
"postTitle" => $post_after->post_title,
"postContent" => $post_after->post_content ,
"postExcerpt" => $post_after->post_excerpt,
"postType" => $post_after->post_type,
"postGuid" => $post_after->guid ,
"postPermLink" => $permLink,
"postThumb" => $thumbLarge,
"postAuthorName" => $authorName,
"postAuthorPic" => $authorURL ,
"postStatus" => $post_after->post_status,
"postDate" => $post_after->post_date,
"postModified" => $post_after->post_modified
);
$newdb->insert("blogMaster",$insert);
}