it-swarm.com.de

Verwenden Sie in URLs das Pluszeichen "+" anstelle des Bindestrichs "-"

Ist es möglich, das Pluszeichen anstelle des Bindestrichs als Wortbegrenzer in der URL zu verwenden? Und wenn ja, wie genau würde das geschehen?

beispiel: www.example.com/some-title/ wird zu www.example.com/some+title/

Natürlich müsste es im Idealfall mit Beiträgen, Seiten und benutzerdefinierten Beiträgen funktionieren.

1
Jaquis

Mark Jaquith verwendet "+" als Trennzeichen für Suchanfragen in seinem Nice Search Plugin. H hier ist was er tut :

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();
    }
}

Vielleicht kann es als Referenz von Nutzen sein?

1
Chip Bennett

BENUTZEN SIE NICHT .HTACCESS dafür!

Sein Wahnsinn, WP wird Links mit - generieren und Ihre Site wird durch .htaccess in einer immergrünen Schleife geführt ... Stattdessen müssen Sie den URL-Generierungscode ändern:

Fügen Sie dies in functions.php ein:

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
T.Todua