jaquis
  • 0
Новичок

Используйте знак плюс «+» вместо дефиса «-» в URL

  • 0

Можно ли использовать знак плюс вместо тире в качестве разделителя слов в URL-адресе? И если да, то как именно это будет сделано?

например: www.example.com/some-title/ становитсяwww.example.com/some+title/

Конечно, в идеале он должен работать с постами, страницами и пользовательскими постами.

Share
  1. Есть ли какая-то особая причина, по которой вы хотите это сделать? Не похоже, что это будет иметь много преимуществ, и это будет довольно сложно сделать.

    • 0
  2. Марк Джакит использует «+» в качестве разделителя строки поискового запроса в своем плагине Nice Search. Вот что он делает :

    function cws_nice_search_redirect() {
        if ( is_search() && strpos( $_SERVER['REQUEST_URI'], '/wp-admin/' ) === false && strpos( $_SERVER['REQUEST_URI'], '/search/' ) === false ) {
            wp_redirect( home_url( '/search/' . str_replace( array( ' ', '%20' ),  array( '+', '+' ), get_query_var( 's' ) ) ) );
            exit();
        }
    }
    

    Может быть, это может быть полезным для справки?

    • 0
  3. НЕ ИСПОЛЬЗУЙТЕ .HTACCESS для этого!

    Это безумие, WP будет генерировать ссылки, - и ваш сайт будет вечно зацикливаться на .htaccess … Вместо этого вам нужно изменить код генерации URL:

    Вставьте это в functions.php :

    add_action( 'wp_ajax_sample-permalink', 'MyajaxSamplePermalink',1);
    function MyajaxSamplePermalink($data) {
        // check that we're dealing with a product, and editing the slug
        $post_id = isset($_POST['post_id']) ? intval($_POST['post_id']) : 0;
        $new_title = isset($_POST['new_title'])? $_POST['new_title'] : null;
        $post_name = isset($_POST['new_slug'])? $_POST['new_slug'] : $new_title;
        //on first fire, there is not set the "new_slug"
        $_POST['new_slug'] = ISSET($_POST['new_slug']) ? $_POST['new_slug'] : slug_modify($post_name); 
    }
    //disable slug beforehand Post Update  action (also, in navigation menus and etc...)
    add_filter('name_save_pre', 'MyfilterNameSavePre');
    function MyfilterNameSavePre($post_name) { 
        if (!empty($_POST['post_ID']) || !empty($_POST['post_name']) || !empty($_POST['post_title']) ){
            // check that we're dealing with a product, and editing the slug
            $post_id = !empty($_POST['post_ID']) ? intval($_POST['post_ID']) : 0;
            $new_slug = !empty($_POST['post_name']) ? $_POST['post_name'] :  $_POST['post_title'];
            //if got from new post
            if ($post_id && !empty($_POST['_wp_http_referer']) ) {  if (stripos($_POST['_wp_http_referer'],'wp-admin/post-new.php')!==false) { $post_name = slug_modify($new_slug); $_POST['post_name']=$post_name;} } 
        }
        return $post_name;
    }
    //disable slug on any update
    add_filter('wp_insert_post_data', 'myappend_slug', 3); function myappend_slug($dataaaaaa) { 
        if (!empty($_POST['_wp_http_referer'])) {
            if (stripos($_POST['_wp_http_referer'],'wp-admin/post-new.php')!==false) {
                $dataaaaaa['post_name']=slug_modify(     (!empty($_POST['post_name']) ? $_POST['post_name'] :$dataaaaaa['post_title'])      );
            } 
        }
        return $dataaaaaa; 
    }
    function slug_modify($slg) {return str_replace('-','+',$slg);}
    
    • 0

Оставить ответ

You must login to add an answer.