我正在尝试张贴到页面上, 并在帖子中进行一些WordPress插入, 但是以某种方式重定向在此之后不起作用。我尝试了以下三种选择:
- wp_redirect($ location);
- wp_safe_redirect($ location);
- header(‘ Location:http://example.com’ );
- 发布到另一个页面。
- 查找要上传的文件并上传目录
- 上载文件。
- 使用set_post_thumbnail设置帖子缩略图
- 重定向到所需页面。
// if you have this in a file you will need to load "wp-load.php" to get access to WP functions. If you post to "self" with this code then WordPress is by default loaded
require $_SERVER['DOCUMENT_ROOT'] . "/wp-load.php";
// require two files that are included in the wp-admin but not on the front end. These give you access to some special functions below.
require $_SERVER['DOCUMENT_ROOT'] . "/wp-admin/includes/file.php";
require $_SERVER['DOCUMENT_ROOT'] . "/wp-admin/includes/image.php";
// required for wp_handle_upload() to upload the file
$upload_overrides = array( 'test_form' =>
FALSE );
global $current_user;
get_currentuserinfo();
$logged_in_user = $current_user->
ID;
//get user POST information
global $post;
$loop = new WP_Query( array(
'posts_per_page' =>
1, 'post_type' =>
"vet-profile", 'order' =>
"ASC", 'orderby' =>
"menu_order", 'author'=>
"$logged_in_user"
)
);
while ( $loop->
have_posts() ): $loop->
the_post();
$current_postID = $post->
ID;
$current_posttitle = get_the_title();
endwhile;
// count how many files were uploaded
$upload_files = $_FILES[ 'upload_files' ];
// load up a variable with the upload direcotry
$uploads = wp_upload_dir();
// foreach file uploaded do the upload
//foreach ( range( 0, $count_files ) as $i )
//{
// create an array of the $_FILES for each file
$file_array = array(
'name' =>
$_FILES['upload_files']['name'], 'type'=>
$_FILES['upload_files']['type'], 'tmp_name'=>
$_FILES['upload_files']['tmp_name'], 'error' =>
$_FILES['upload_files']['error'], 'size'=>
$_FILES['upload_files']['size'], );
// check to see if the file name is not empty
if ( !empty( $file_array['name'] ) )
{ ?>
<
?php
// upload the file to the server
$uploaded_file = wp_handle_upload( $upload_files, $upload_overrides );
if ( $uploaded_file )
{
echo '<
script>
alert("Image successfully uploaded.\n");
<
/script>
';
}
else
{
echo '<
script>
alert("Fish! some error occured. Please try again.");
<
/script>
';
} // checks the file type and stores in in a variable
$wp_filetype = wp_check_filetype( basename( $uploaded_file['file'] ), null );
// set up the array of arguments for "wp_insert_post();
"
$attachment = array(
'post_mime_type' =>
$wp_filetype['type'], 'post_title' =>
preg_replace('/\.[^.]+$/', '', basename( $uploaded_file['file'] ) ), 'post_content' =>
'', 'post_author' =>
$logged_in_user, 'post_status' =>
'inherit', 'post_type' =>
'attachment', 'post_parent' =>
$current_postID, 'guid' =>
$uploads['url'] . '/' . $file_array['name']
);
// insert the attachment post type and get the ID
$attachment_id = wp_insert_attachment( $attachment, $uploaded_file['file'], $current_postID );
// generate the attachment metadata
$attach_data = http://www.srcmini.com/wp_generate_attachment_metadata( $attachment_id, $uploaded_file['file'] );
// update the attachment metadata
wp_update_attachment_metadata( $attachment_id, $attach_data);
// set thumbnail to the current post
set_post_thumbnail( $current_postID, $attachment_id );
echo '<
script>
alert("set thumbnail")';
$location = empty($_POST['redirect_to']) ? get_redirect_link() : $_POST['redirect_to'];
wp_safe_redirect( $location );
echo '<
script>
alert("End Loop");
<
/script>
';
}
提前致谢
#1我发现我唯一可以可靠地调用wp_redirect的地方是init动作挂钩(http://codex.wordpress.org/Plugin_API/Action_Reference/init)的回调函数, 因为它在文档中明确指出:
在WordPress完成加载之后但在发送任何标头之前运行。对于拦截$ _GET或$ _POST触发器很有用。你可能需要调查一下。如果这对你不起作用, 你可能想尝试的另一件事是使用输出缓冲。这是有关如何执行此操作的简洁教程:
http://tommcfarlin.com/wp_redirect-headers-already-sent/
#2
echo '<
script>
alert("set thumbnail")';
$location = empty($_POST['redirect_to']) ? get_redirect_link() : $_POST['redirect_to'];
wp_safe_redirect( $location );
echo '<
script>
alert("End Loop");
<
/script>
';
上面的代码肯定会无法正常工作。向输出中写入内容后, 你将无法重定向。我没有检查其余的代码, 但是如果它如你所说的那样工作, 那么删除顶部和底部的行(甚至只是顶部的行)都应该可以完成所有工作:
$location = empty($_POST['redirect_to']) ? get_redirect_link() : $_POST['redirect_to'];
wp_safe_redirect( $location );
(如果在wp-config.php中启用调试模式, 你应该会看到一条错误消息, 而不仅仅是白屏。因此, 如果这不起作用, 你可以在此处复制错误, 我们可以确切地知道问题出在哪里。 )
推荐阅读
- wp_title显示页面标题,但不显示网站标题
- WP_Query参数不起作用()
- wp_logout_url($redirect);不管用
- wp_localize_script不起作用
- wp_list_pages没有显示标题属性
- 北亚数据恢复异常断电导致Oracle数据库报错(ORA-01110错误)且没有备份的数据恢复
- 鸿蒙基于开放式测试方案发布原子化服务的实战
- SpringBoot+SpringSecurity系列八(整合JWT#yyds干货盘点#)
- #yyds干货盘点#关于 Java 的可变参数你真的了解吗()