为了账号安全,请及时绑定邮箱和手机立即绑定

从 WP Job Manager 列表中删除永久链接公园

从 WP Job Manager 列表中删除永久链接公园

PHP
茅侃侃 2022-07-29 10:13:24
我有一个工作网站,将工作放在以下 URL 上:https://www.jarsolutions.co.uk/job/housing-solutions-officer-2/这是来自插件 WP Job Manager,我试图简单地删除 /job/ 部分,所以它看起来像这样:https://www.jarsolutions.co.uk/housing-solutions-officer-2/麻烦的是,如果我从永久链接设置中删除它并留空,它会用默认的 /jobs/ 填充它。我发现这个功能可以让我将它更改为我喜欢的任何东西,但我找不到如何调整它以完全摆脱它或将其更改为无...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' );这段代码如果来自他们自己的网站:https ://wpjobmanager.com/document/tutorial-sharing-the-job-slugpermalink/ ,它还提供了将内容添加到 url 的代码片段......但它又没有'不要提供有关从他的 URL 中删除内容的任何信息。如果有人能指出我正确的方向,那真的很有帮助。
查看完整描述

3 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

这是您可以从术语 URL中删除自定义分类 slug(« job »)的方法:


这是代码的主要部分,您可以将其插入到您当前的主题functions.php中,只是不要忘记将每个函数中的分类名称/slugs 更改为您自己的值。


add_filter('request', 'rudr_change_term_request', 1, 1 );


function rudr_change_term_request($query){


    $tax_name = 'product_cat'; // specify you taxonomy name here, it can be also 'category' or 'post_tag'


    // Request for child terms differs, we should make an additional check

    if( $query['attachment'] ) :

        $include_children = true;

        $name = $query['attachment'];

    else:

        $include_children = false;

        $name = $query['name'];

    endif;



    $term = get_term_by('slug', $name, $tax_name); // get the current term to make sure it exists


    if (isset($name) && $term && !is_wp_error($term)): // check it here


        if( $include_children ) {

            unset($query['attachment']);

            $parent = $term->parent;

            while( $parent ) {

                $parent_term = get_term( $parent, $tax_name);

                $name = $parent_term->slug . '/' . $name;

                $parent = $parent_term->parent;

            }

        } else {

            unset($query['name']);

        }


        switch( $tax_name ):

            case 'category':{

                $query['category_name'] = $name; // for categories

                break;

            }

            case 'post_tag':{

                $query['tag'] = $name; // for post tags

                break;

            }

            default:{

                $query[$tax_name] = $name; // for another taxonomies

                break;

            }

        endswitch;


    endif;


    return $query;


}



add_filter( 'term_link', 'rudr_term_permalink', 10, 3 );


function rudr_term_permalink( $url, $term, $taxonomy ){


    $taxonomy_name = 'product_cat'; // your taxonomy name here

    $taxonomy_slug = 'product_cat'; // the taxonomy slug can be different with the taxonomy name (like 'post_tag' and 'tag' )


    // exit the function if taxonomy slug is not in URL

    if ( strpos($url, $taxonomy_slug) === FALSE || $taxonomy != $taxonomy_name ) return $url;


    $url = str_replace('/' . $taxonomy_slug, '', $url);


    return $url;

}

并且不要忘记旧 URL 的 301 重定向,这是您的网站 SEO 所必需的。


add_action('template_redirect', 'rudr_old_term_redirect');


function rudr_old_term_redirect() {


    $taxonomy_name = 'product_cat';

    $taxonomy_slug = 'product_cat';


    // exit the redirect function if taxonomy slug is not in URL

    if( strpos( $_SERVER['REQUEST_URI'], $taxonomy_slug ) === FALSE)

        return;


    if( ( is_category() && $taxonomy_name=='category' ) || ( is_tag() && $taxonomy_name=='post_tag' ) || is_tax( $taxonomy_name ) ) :


            wp_redirect( site_url( str_replace($taxonomy_slug, '', $_SERVER['REQUEST_URI']) ), 301 );

        exit();


    endif;


}

该代码使用不同的分层和非分层分类法进行了测试,并且在此永久链接设置下效果很好。


查看完整回答
反对 回复 2022-07-29
?
跃然一笑

TA贡献1826条经验 获得超6个赞

从您引用的插件作者的网站上,我确实注意到它说:

注意:从 WP Job Manager 版本 1.27.0 开始,可以在“可选”部分下的“设置”->“永久链接”中更改作业永久链接。

对于以前版本的 WP Job Manager,请参阅下面的指南。谢谢!

它列出了七个不同的代码示例。

在我自己玩这个时,我无法让任何代码示例工作(它们以奇怪的方式中断)。

所以我猜如果您运行的版本超过 1.27.0,那么这些代码示例将不再有效。

我尝试使用一些重写规则来从 url 中删除 /job,但问题是,关于插件的所有内容都在寻找一个关键字(默认值:job),它将通过它来搜索内容。

如果它被删除,WordPress 将期望该 url 必须是一个页面。可以将其删除,但需要付出不小的努力。

最好的办法是向 WP Job Manager 提交支持票,并希望他们将其放在他们的路线图上,或者付钱给像我这样的插件开发人员编写必要的代码让你这样做。


查看完整回答
反对 回复 2022-07-29
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

为了从 URL 中删除 'job/',您必须按照以下步骤操作

第 1 步:将永久链接设置更改为“帖子名称” 第 2 步:将工作创建为“帖子”

如果您不想在 Post 中创建,则不能从 URL 中删除“job/”,除非您在 URL 中添加“job-”作为前缀(https://www.jarsolutions.co.uk/job-housing-解决方案-office-2/ )



查看完整回答
反对 回复 2022-07-29
  • 3 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信