2017-04-25 17 views
0

Ich habe eine benutzerdefinierte Beitragstyp namens patch. Jeder Patch hat einen Metaschlüssel version und der Wert dieses Metas ist immer eindeutig. Zum Beispiel:Wordpress Meta in Permalink

  • 1.0.0
  • 1.0.1
  • 1,5
  • ...

Ich möchte spezielle Permalink-Struktur machen, so könnte jeder Patch von dieser URL zugänglich sein Struktur:

www.site.ru/patch/%version%

So www.site.ru/patch/1.0.1 würde zu bestimmten Patch Post Hexe Metaschlüssel version Wert gleich 1.0.1 führen.

Wie kann ich das tun?

Ich denke, es sollte einen Weg geben, um automatisch %version% zu einer Struktur wie index.php?p=*needed_patch_post_id* zu transformieren.

Antwort

0

Versuchen Sie diesen Code zu verwenden:

add_action('init', 'rb_add_rewrite_rules'); 
add_filter('post_type_link', 'rb_create_permalinks', 10, 3); 

function rb_add_rewrite_rules() { 
    global $wp_rewrite; 
    $wp_rewrite->add_rewrite_tag('%version%', '([^/]+)', 'version='); 
    $wp_rewrite->add_permastruct('patch', 'patch/%version%/', false); 
} 

function rb_create_permalinks($permalink, $post, $leavename) { 

    $no_data = 'no-speciality'; 

    $post_id = $post->ID; 

    if($post->post_type != 'patch' || empty($permalink) || in_array($post->post_status, array('draft', 'pending', 'auto-draft'))) 

    return $permalink; 

    $var1 = get_post_meta($post_id, 'version', true); 

    $var1 = sanitize_title($var1); 

    if(!$var1) { $var1 = $no_data; } 

    $permalink = str_replace('%version%', $var1, $permalink); 

    return $permalink; 
} 

Ich hoffe, dies wird für Sie arbeiten. Vielen Dank.

+0

Leider bin ich auf der Hauptseite der Website umgeleitet, wenn Sie auf Patch-Links klicken :( – CMTV

Verwandte Themen