WP工作管理器更改工作URL(不是Slug)

时间:2015-04-01 作者:nielsv

我正在使用WP Job Manager plugin 在我的wordpress网站上。我的作业列表当前位于/jobs . 我想穿上它/careers . 所有作业的列表不是一个页面,因此我无法在那里更改url。

我找到了this 主题,该主题显示了如何从/job/titlejob/careers/titlejob. 但这并不能说明我可以如何改变/jobs/careers.

在示例中,他们正在这样做:

function change_job_listing_slug( $args ) {
  $args[\'rewrite\'][\'slug\'] = _x( \'careers\', \'Job permalink - resave permalinks after changing this\', \'job_manager\' );
  return $args;
}

add_filter( \'register_post_type_job_listing\', \'change_job_listing_slug\' );
当我将此添加到functions.php 我的工作详细信息页面位于/careers/jobtitle. 但总览仍在继续/jobs . 我怎样才能改变这一点?

我还试图将工作翻译成职业,但这也只适用于单一工作,不适用于我对工作的概述。

3 个回复
最合适的回答,由SO网友:birgire 整理而成

如果您查看output() 中的方法includes/admin/class-wp-job-manager-setup.php 文件,即该部分:

/**
 * Output addons page
 */
public function output() {
    $step = ! empty( $_GET[\'step\'] ) ? absint( $_GET[\'step\'] ) : 1;

    if ( 3 === $step && ! empty( $_POST ) ) {
        $create_pages    = isset( $_POST[\'wp-job-manager-create-page\'] ) ? $_POST[\'wp-job-manager-create-page\'] : array();
        $page_titles     = $_POST[\'wp-job-manager-page-title\'];
        $pages_to_create = array(
            \'submit_job_form\' => \'[submit_job_form]\',
            \'job_dashboard\'   => \'[job_dashboard]\',
            \'jobs\'            => \'[jobs]\'
        );

        foreach ( $pages_to_create as $page => $content ) {
            if ( ! isset( $create_pages[ $page ] ) || empty( $page_titles[ $page ] ) ) {
                continue;
            }
            $this->create_page( sanitize_text_field( $page_titles[ $page ] ), $content, \'job_manager_\' . $page . \'_page_id\' );
        }
    }
您可以看到它正在创建一个页面jobs 包含[jobs] 用于列出可用作业的快捷码。

因此,您应该能够使用careers slug,包含[jobs] 短代码。

SO网友:robert-jakobson

好的,这里有帮助:)如果你觉得这有帮助,请分享悬赏!

Step 1: The Research

我的第一个提示是,slug的这些部分通常由自定义帖子类型设置控制,因此我仔细检查了插件文件,最后发现在161行“Includes”文件夹中“class wp job manager post types.php”文件中的插件中,它指出(1):

if ( current_theme_supports( \'job-manager-templates\' ) ) {
        $has_archive = _x( \'jobs\', \'Post type archive slug - resave permalinks after changing this\', \'wp-job-manager\' );
    } else {
        $has_archive = false;
    }

Step 2: The Change

现在,“current\\u theme\\u supports”函数给了我们一个重要的提示-我们需要在当前活动主题中启用一些东西,以便解决问题。直接从插件文档(2)中搜索一下,这就是如何做到的:

add_theme_support( \'job-manager-templates\' );
只需将其添加到主题的功能中即可。php文件。并遵循上述文档页面(以下链接)中的其余说明,其中包括:

更改slug后重新保存永久链接,然后添加自定义存档和分类模板,虽然我当前没有安装插件,但这应该可以解决问题

References:

<(1)https://github.com/mikejolley/WP-Job-Manager/blob/master/includes/class-wp-job-manager-post-types.php https://wpjobmanager.com/document/enabling-full-template-support/

SO网友:bosco

<子>Please Note: 考虑了有关第三方插件和主题的问题off-topic 这里是WordPress开发SE。获得此类项目支持的最佳场所是第三方的官方支持渠道。请查看How to Ask 我们的Help Center 了解更多关于主题和适合度的问题

也就是说,我浏览了一下插件,尤其是文件includes/class-wp-job-manager-post-types.php 插件实际注册\'job_listing\' 岗位类型。插件作者提供\'register_post_type_job_listing\' 以这样一种方式过滤钩子:您可以更改自定义post类型注册的任何和每个参数。

记住这一点,阅读the Codex entry for register_post_type(), 注意has_archive 参数,该参数允许您指定要用于存档页的slug。因此,最直接的解决方案应该是更新主题中的函数functions.php 文件类似于以下内容:

function wpse182946_change_job_listing_slugs( $args ) {
  $args[\'rewrite\'][\'slug\'] = _x( \'career\', \'Job CPT slug\', \'my_site_identifier\' );
  $args[\'has_archive\']     = _x( \'careers\', \'Job CPT archive slug\', \'my_site_identifier\' );

  return $args;
}

add_filter( \'register_post_type_job_listing\', \'wpse182946_change_job_listing_slugs\' );
通过在仪表板上保存永久链接设置,手动刷新安装的重写规则,以使更改生效。

如果您希望每隔(或仅几处)更改站点上出现的文本,您应该另外更改labels 数组参数:

function wpse182946_modify_job_listing_cpt( $args ) {
  $singular = \'Career\';
  $plural   = \'Careers\';

  // Alter URL permalinks/slugs
  $args[\'rewrite\'][\'slug\'] = _x( strtolower( $singular ), \'Job CPT slug\', \'my_site_identifier\' );
  $args[\'has_archive\']     = _x( strtolower( $plural ), \'Job CPT archive slug\', \'my_site_identifier\' );

  // Alter CPT labels
  $args[\'labels\'][\'name\']                = $plural;
  $args[\'labels\'][\'singular_name\']       = $singular;
  $args[\'labels\'][\'menu_name\']           = __( $singular . \' Listings\', \'my_site_identifier\' );
  $args[\'labels\'][\'all_items\']           = __( \'All \' . $plural, \'my_site_identifier\' );
  $args[\'labels\'][\'add_new\']             = __( \'Add New\', \'my_site_identifier\' );
  $args[\'labels\'][\'add_new_item\']        = __( \'Add \' . $singular, \'my_site_identifier\' );
  $args[\'labels\'][\'edit\']                = __( \'Edit\', \'my_site_identifier\' );
  $args[\'labels\'][\'edit_item\']           = __( \'Edit \' . $singular, \'my_site_identifier\' );
  $args[\'labels\'][\'new_item\']            = __( \'New \' . $singular, \'my_site_identifier\' );
  $args[\'labels\'][\'view\']                = __( \'View \' . $singular, \'my_site_identifier\' );
  $args[\'labels\'][\'view_item\']           = __( \'View \' . $singular, \'my_site_identifier\' );
  $args[\'labels\'][\'search_items\']        = __( \'Search \' . $plural, \'my_site_identifier\' );
  $args[\'labels\'][\'not_found\']           = __( \'No \' . $plural . \' found\', \'my_site_identifier\' );
  $args[\'labels\'][\'not_found_in_trash\']  = __( \'No \' . $plural . \' found in trash\', \'my_site_identifier\' );
  $args[\'labels\'][\'parent\']              = __( \'Parent \' . $singular, \'my_site_identifier\' );

  return $args;
}

add_filter( \'register_post_type_job_listing\', \'wpse182946_modify_job_listing_cpt\' );

结束

相关推荐

WordPress Custom URLs

根据maioman发布的链接,我对以下问题进行了修改:我很难使用自定义的帖子类型/分类法。我想要一个自定义的帖子类型的剧集,并且自定义帖子类型的分类是包含用户生成的术语的剧集。我能够剧集/自定义术语名称/工作。如果你转到这里,它会显示与此术语相关的所有帖子。然而,如果你在剧集/自定义术语名称/帖子标题上看到一篇帖子,我会看到404页。function episodes() { $labels = array( \'name\' => _