WP作业管理器 - 更改添加作业lisitng的注册流程

Joh*_*der 9 php wordpress

我正在寻找一种方法或一些如何实现以下的建议.

我希望能够改变用户注册添加作业lisitngs的流程.电流如下

  1. 用户添加工作详细信息
  2. 然后用户点击"预览"按钮
  3. 此时,系统会提示用户登录或注册.
  4. 用户登录或注册
  5. 然后,用户可以看到预览的项目
  6. 用户提交列表

我想要发生的是广告如下:

  1. 用户添加工作详细信息
  2. 用户点击"预览"按钮
  3. 用户可以看到预览的项目
  4. 用户尝试提交列表
  5. 系统现在仅提示用户登录或注册
  6. 用户登录/注册
  7. 列表已提交

现在我知道我们可以通过在函数中使用以下代码来禁用添加列表页面上的用户注册字段:

add_filter( 'submit_job_form_show_signin', '__return_false' );
Run Code Online (Sandbox Code Playgroud)

但我无法在预览页面上的提交按钮上找到如何申请注册/登录的任何地方,任何有任何想法如何实现这一目标?

问候,

Ama*_*tap 1

我知道这是一篇旧文章,但希望这能有所帮助。在可湿性粉剂作业管理器中有一些明显的过滤器和操作,您可以在作业提交流程中插入登录/注册表单。

但是,仅仅通过添加以下过滤器来禁用提交表单中的登录表单并不是一个好主意:

 `add_filter( 'submit_job_form_show_signin', '__return_false' );` 
Run Code Online (Sandbox Code Playgroud)

注意:WP 作业管理器提交表单模板在渲染之前检查以下功能job submit form(因此不要忘记为来宾用户设置访问权限)

<?php if ( job_manager_user_can_post_job() || job_manager_user_can_edit_job( $job_id ) ) : ?>
Run Code Online (Sandbox Code Playgroud)

我认为操纵作业提交流程的更好方法是通过步骤向导或通过以下过滤器:submit_job_steps

挂钩到上面的过滤器来修改流程,只需更改以下回调的优先级:提交、预览和完成:

$this->steps  = (array) apply_filters( 'submit_job_steps', array(
            'submit' => array(
                'name'     => __( 'Submit Details', 'wp-job-manager' ),
                'view'     => array( $this, 'submit' ),
                'handler'  => array( $this, 'submit_handler' ),
                'priority' => 10
                ),
            'preview' => array(
                'name'     => __( 'Preview', 'wp-job-manager' ),
                'view'     => array( $this, 'preview' ),
                'handler'  => array( $this, 'preview_handler' ),
                'priority' => 20
            ),
            'done' => array(
                'name'     => __( 'Done', 'wp-job-manager' ),
                'view'     => array( $this, 'done' ),
                'priority' => 30
            )
        ) );
Run Code Online (Sandbox Code Playgroud)

但是,如果您仍然希望走您正在执行的路径(建议注意),您可以通过修改 来实现WP-Job-Manager/templates/job-preview.php,将以下行添加到末尾。

<?php get_job_manager_template( 'account-signin.php' ); ?>
Run Code Online (Sandbox Code Playgroud)