将自定义字段添加到插件

时间:2020-10-03 作者:michael74

我正在使用WP Job Manager插件,希望在保存帖子时自动将company name字段添加到slug中。

我已经使用下面的代码使其工作,但一旦我保存并再次编辑帖子,它将重新添加公司名称,因此,职务公司名称将变为职务公司名称

有人知道我做错了什么吗?我认为我的IF语句可能有问题,它应该检查slug中是否已经存在companyname字符串,如果已经存在,请取消钩住函数。

function custom_job_post_type_link( $post_id, $post ) {

    $permalink = $post->post_name;  
    $companyname = $post->_company_name;

    if ( strpos( $permalink, strval($companyname) ) ) {
        return;
    }
    
    // unhook this function to prevent infinite looping
    remove_action( \'save_post_job_listing\', \'custom_job_post_type_link\', 10, 2 );

    // add the id to the slug
    $permalink .= \'-\' . $companyname;

    // update the post slug
    wp_update_post( array(
        \'ID\' => $post_id,
        \'post_name\' => $permalink
    ));

    // re-hook this function
    add_action( \'save_post_job_listing\', \'custom_job_post_type_link\', 10, 2 );
}

add_action( \'save_post_job_listing\', \'custom_job_post_type_link\', 10, 2 );

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

尝试使用函数sanitize_title() - documentation, 当您检查字符串是否已在permalink中,以及将其附加到permalink时,它会将字符串转换为slug:

function custom_job_post_type_link( $post_id, $post ) {

    $permalink = $post->post_name;  
    $companyname = $post->_company_name;

    if ( strpos( $permalink, sanitize_title($companyname) ) ) { // <-- Here
        return;
    }
    
    // unhook this function to prevent infinite looping
    remove_action( \'save_post_job_listing\', \'custom_job_post_type_link\', 10, 2 );

    // add the id to the slug
    $permalink .= \'-\' . sanitize_title($companyname); // <-- And here

    // update the post slug
    wp_update_post( array(
        \'ID\' => $post_id,
        \'post_name\' => $permalink
    ));

    // re-hook this function
    add_action( \'save_post_job_listing\', \'custom_job_post_type_link\', 10, 2 );
}

add_action( \'save_post_job_listing\', \'custom_job_post_type_link\', 10, 2 );

相关推荐

How to edit URL Slug?

我的一些博客帖子段塞在编辑帖子屏幕中显示异常字符(即3%e2%80%8b-%e2%80%8b特权%e2%80%8b-%e2%80%8b-%e2%80%8b-%e2%80%8b基于智能手机的%e2%80%8b-%e2%80%8b字段),但在实际的web浏览器上显示一个干净的段塞。在我的SEO审计中,这些长而乱的鼻涕虫显示为URL错误。有人知道如何修复这些鼻涕虫吗?