Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 访问刚刚创建的帖子的URL_Php_Wordpress - Fatal编程技术网

Php 访问刚刚创建的帖子的URL

Php 访问刚刚创建的帖子的URL,php,wordpress,Php,Wordpress,我正在使用WordPress创建一个网站,允许用户上传徒步路径文件(gpx(xml)文件) 为此,用户访问一个名为“创建新曲目”的页面(这是一个带有特定模板的WordPress页面)。通过php创建的表单,用户输入远足的名称,一个简短的描述,并选择要上传的文件。然后,我的代码对输入的数据和选择的文件进行常规检查。如果所有检查都通过,文件将上载到服务器,并创建一篇新文章(添加输入的标题和说明以及附加到文章的文件) 我想,一旦文件已经上传,新的帖子已经创建,然后用户访问一个网页,他可以查看新创建的文

我正在使用WordPress创建一个网站,允许用户上传徒步路径文件(gpx(xml)文件)

为此,用户访问一个名为“创建新曲目”的页面(这是一个带有特定模板的WordPress页面)。通过php创建的表单,用户输入远足的名称,一个简短的描述,并选择要上传的文件。然后,我的代码对输入的数据和选择的文件进行常规检查。如果所有检查都通过,文件将上载到服务器,并创建一篇新文章(添加输入的标题和说明以及附加到文章的文件)

我想,一旦文件已经上传,新的帖子已经创建,然后用户访问一个网页,他可以查看新创建的文章。我想这个页面是第二个WordPress页面,名为“编辑轨迹”,它使用第二个特定的模板

我目前的计划是使用$track_ID(参见代码-这是新创建的帖子的ID)并以url参数的形式将其添加到“Edit track”url的url中。成功创建曲目后,当“编辑曲目”页面自动打开时,将读取url参数,并可编辑相应的曲目

我的问题是,我需要编写什么代码,以便在成功创建新帖子后访问“编辑跟踪”页面

我完全被难住了!我尝试过使用php和Javascript,但无法解决如何做到这一点。欢迎所有想法

我的代码框架附在后面

add_shortcode('sut_form', 'sut_form_shortcode');

function sut_form_shortcode() {

    if (isset( $_POST['sut_form_create_track_submitted'] ) &&
        wp_verify_nonce($_POST['sut_form_create_track_submitted'], 'sut_form_create_track') ) { 

        // LOTS OF CHECKS ON WHAT HAS BEEN ENTERED
    }
    else // ALL CHECKS PASSED, SO WE CAN CREATE THE POST
    {
        $track_data = array(
            'post_title' => $sut_track_name,
            'post_content' => $sut_track_text,
            'post_status' => 'pending',
            'post_author' => $current_user->ID,
            'post_type' => 'tracks'     
        );

        // Create track post and attach image
        if ($track_id = wp_insert_post($track_data)) {  // POST CREATED

            wp_set_object_terms( $track_id, (int)$_POST['sut_track_category'], 'track_category'); // CATEGORY ASSIGNED TO POST
            update_field('field_5bf39d97d1e8d', $movefile['url'], $track_id); // UPLOADED FILE ATTACHED TO POST

            // PROBLEM!!! HOW  DO I KNOW ACCESS THE URL FOR POST WHICH HAS JUST BEEN CREATED? 
        }
    }
}

您的函数是用add_shortcode注册的,所以它是在页面内容呈现期间执行的,现在使用header(“location…”已经太晚了,因为header可能已经发送到客户端

我能想到的唯一解决方案是,在不更改代码和不了解整个项目的情况下,打印JavaScript代码段,如下所示:

$permalink = get_permalink($track_id);
echo("<script>window.location.replace('$permalink');</script>");
$permalink=get\u permalink($track\u id);
echo(“window.location.replace(“$permalink”);”;

它不太整洁,但应该可以工作。

使用
get_permalink($track_id);
Hmm。不确定。我可以在帖子创建后使用一点javascript——但是,我如何将$track_id传递给javascript?或者我可以使用php代码,但是,什么php代码可以打开新的url?使用
标题(“位置:url”):
SUCCESS!感谢您的介绍,也感谢您解释如何/何时使用快捷码注册函数。我不知道这一点。谢谢。