2016-05-18 9 views
0
にリダイレクト

これはalready asked by User Bradでしたが、彼は興味を失ったようです。そのプラグインがあることはわかっています(たとえばCurated Search)が、あまりにも多くのページにこれらのいずれかを使用するためのアンカーが多すぎます。 検索クエリ=スラッグの場合は、ページ

のは、私は2つのページで www.homepage.com/catswww.homepage.com/dogsをWP-ページがあるとしましょう。 www.homepage.com/catsには2つのアンカーがあります www.homepage.com/cats#miceおよび www.homepage.com/cats#birds

誰かがwww.homepage.com/cats#miceに「猫#マウス」を検索する場合、私は、誰かがwww.homepage.com/catsに「猫」を検索した場合にリダイレクトしたいとそうです。

私はかなり長い間これを耳にしていましたが、私はphp-noobですので、うまくいきません。これまでに私が得たことは次のとおりです。たぶんそれは完全にばかげているかもしれない、多分私はコードの1行が欠けている。

<?php 
    add_action ('template_redirect', 'one_match_redirect'); 
    function one_match_redirect() { 
     if (is_search()) { 
      $query = get_search_query(); 
      $url = get_home_url($blog_id = null, $path = $query, $scheme = null); 
      if (is_array(@get_headers($url))) { 
       wp_redirect ($url, 303); 
      } 
      else { 
       new WP_Query ('s=$query'); 
      } 
     } 
    } 
    ?> 

リダイレクトは機能しますが、検索時など。 "lalala"については、www.homepage.com/lalala の代わりに、の代わりにに再接続するだけです。 私は何が間違っていますか? ご協力いただければ幸いです。

+0

明確にする:もちろん、誰も検索しませんが、少なくとも私のページには、作業を行います"cats#mice"のようなもののために。私は単に特定のクエリを再フォーマットするいくつかのpreg_replace-operationsを省略しましたが、これは私の問題とは関係ありません。 –

答えて

1

もう少し前後します。今それは動作します。注意してください:私はまだPHPのnoobです、したがって、おそらく次はおそらく美味しいコードです。私は次のように十分だろう、私のアンカーを気/持っていなかった場合は

<?php 
add_action ('template_redirect', 'one_match_redirect'); 

function one_match_redirect() { 
    global $wpdb; 
    if (is_search()) { 
    $query = get_search_query(); 
    $query2 = strstr($query, "#", true); 
    $url = get_home_url($blog_id = null, $path = $query, $scheme = null); 
    $pos = strpos($query, '#'); 
    if ($pos === false) { 
     $page = get_page_by_path($query); 
     if ($page) { 
     wp_redirect ($url, 303); 
     } 
    } 
    else { 
     $page = get_page_by_path($query2); 
     if ($page) { 
     wp_redirect ($url, 303); 
     } 
    } 
    } 
} 
?> 

<?php 
add_action ('template_redirect', 'one_match_redirect'); 

function one_match_redirect() { 
    global $wpdb; 
    if (is_search()) { 
    $query = get_search_query(); 
    $url = get_home_url($blog_id = null, $path = $query, $scheme = null); 
    $page = get_page_by_path($query); 
    if ($page) { 
     wp_redirect ($url, 303); 
    } 
    } 
} 
?>