フォーラムへの返信

15件の返信を表示中 - 1 - 15件目 (全25件中)
  • フォーラム: 使い方全般
    返信が含まれるトピック: add_rewrite_rule で、強制的に子階層を追加する方法

    失礼いたしました。入れ違いでコメント気づきませんでした。

    例!
    どうもありがとうございます!

    'wp'というアクションフックを使うのですね。ほんっとに、どんなケースでもご存じですね。脱帽すぎます。

    できました。

    いつもいつもいつも、本当にありがとうございます。

    フォーラム: 使い方全般
    返信が含まれるトピック: add_rewrite_rule で、強制的に子階層を追加する方法

    すみません$_SERVER["REQUEST_URI"]が何を取得するかわかっていませんでした。

    あとひょっとしたらですが、function rewrite_init()に書くのが間違っていたのでしょうか?

    下記のように<head>内に書きましたら、URLの変更には成功しました!

    //header.php
    
    <head>
    
    <?PHP
    	//現在ページのURLの取得
    	$url = $_SERVER["REQUEST_URI"];
    	
    	// リダイレクト前後のURLを指定
    	$source_url = '#/country/japan/#';
    	$dest_url   = 'http://example.com/country/japan/history/';
    
    	//取得したURLがアクセスさせたくないURLかどうかの比較
    	$match = preg_match($source_url, $url);
    
    	if($match === 1){
    		wp_redirect($dest_url, 302);
    		exit;
    	}	
    ?>
    
    <?php wp_head(); ?>
    </head>

    しかし、URLの変更には成功したのですが、ブラウザで「ページの自動転送設定が正しくありません。このアドレスへのリクエストに対するサーバーの自動転送設定がループしています。」というエラーが表示されてしまうことに…

    なかなかです。泣

    フォーラム: 使い方全般
    返信が含まれるトピック: add_rewrite_rule で、強制的に子階層を追加する方法

    ありがとうございます。

    preg_match() については正規表現にすべきですよね。先日も教えて頂いたのにすみませんでした。

    wp_redirect()については絶対パスにすればいいとのアドバイスかと思うので、とりあえず同様にしていいと解釈しました。

    それらを踏まえた下記ですができず、何がおかしいか今一度アドバイスをいただけませんでしょうか?

    	// リダイレクト前後のURLを指定(この2行を参考リンクに追加しました)
    	$source_url = '^http:\/\/example.com\/country\/([^/]+)?$';
    	$dest_url   = '^http:\/\/example.com\/country\/([^/]+)\/history?$';
    フォーラム: 使い方全般
    返信が含まれるトピック: add_rewrite_rule で、強制的に子階層を追加する方法

    なるほど。add_rewrite_ruleは「>ブラウザの上のURLバーに表示されるURLはアクセスさせたくないページのURLのまま」なのですね。

    なんでもよくご存じですね…💧笑

    となるとそちらの参考リンクを見ながら、質問のfunction rewrite_init()はこう変更すればいいのかと思ったのですが…変化なく。

    	// デフォルトの子ページを指定【これができません】
    	add_rewrite_rule(
    		'^country/([^/]+)?$',
    		'index.php?country=$matches[1]/history',
    		'top'
    	);
    

    ↓ 変更

    	//現在ページのURLの取得
    	$url = $_SERVER["REQUEST_URI"];
    	
    	// リダイレクト前後のURLを指定(この2行を参考リンクに追加しました)
    	$source_url = '^country/([^/]+)/?$';
    	$dest_url   = 'index.php?country=$matches[1]&countrychild=history';
    
    	//取得したURLがアクセスさせたくないURLかどうかの比較
    	$match = preg_match('<.$source_url.>', $url);
    
    	if($match === 1){
    		wp_redirect($dest_url, 302);
    		exit;
    	}	
    

    上記(この2行を参考リンクに追加しました)を自分で追加したのですが、ここが問題でしょうか?

    またはこの部分を次のようにも試したのですがやはりだめで…もし他にも試すべきことがございましたら、また宜しくお願い致します。

    	// リダイレクト前後のURLを指定(この2行を参考リンクに追加しました)
    	$source_url = home_url().'^country/([^/]+)/?$';
    	$dest_url   = home_url().'^country/([^/]+)/history/?$';
    
    • この返信は2 ヶ月、 4 週間前に fongafon さんが編集しました。
    フォーラム: 使い方全般
    返信が含まれるトピック: add_rewrite_rule で、強制的に子階層を追加する方法

    @ishitakaさま、こんにちは。いつもお世話になっております。

    やってみたのですが、やはり
    example.com/country/japan/ にアクセスしたときのURLは
    example.com/country/japan/ のままで、
    example.com/country/japan/history/ に変化するということはありませんでした。

    きちんとコピペしてアップロードしましたし、アップロード後にパーマリンク更新もしたのですが。

    まず文章を読み返して修正があればなおしていただきたいのですが、

    とりあえず、

    下記【条件】に該当する記事一覧を取得したい。

    ということでよろしいでしょうか?

    
    【条件】
    
    投稿タイプ:product
    │
    ├ タクソノミー:product-cat
    │ └ ターム:watch
    │
    ├ タクソノミー:brand
    │ ├ ターム:rolex
    │ └ ターム:casio
    
    

    つまり、
    ・「product」に属し、かつ
    ・「product-cat」の「watch」に属し、かつ
    ・「brand」の「rolex」および「casio」に属す
    という記事でよろしいでしょうか?

    ぱっ!!!!
    パーマリンク設定を忘れていました……
    つい先日も教えて頂いたことでしたのに。死にたいです。
    どうもありがとうございます。

    ところで質問には「たとえば」として3種類の試行錯誤を書いておきましたが、いずれが正しい指定方法でしょうか?

    また、指定方法の一覧などはどこかにございませんでしょうか?

    フォーラム: 使い方全般
    返信が含まれるトピック: カスタム投稿に子階層URLを作る方法

    なるほど、「ぜんぶ書いておけばとりあえず正解でしょ」と勝手な解釈で突き進んでいました。笑
    最後までどうもありがとうございます。

    フォーラム: 使い方全般
    返信が含まれるトピック: カスタム投稿に子階層URLを作る方法

    ごめんなさい!すみません!!申し訳ございません!!!

    出来ました。仰る通り、リライトルールの更新をしていなかったせいだったようです。

    「はい、間違いなくしています。」と申し上げたのは、シンプルな方についてだけで、ご提示のコードの方では更新していなかったための発言でした。

    お手を煩わせてしまい、本当にすみません。ほんっとにすみません。

    ひとつ不思議なのは、シンプルな方では効かないということです。
    こちらです。

    function rewrite_init() {
    	add_rewrite_rule( 'http://example.com/country/japan', 'http://example.com/country/ameria', 'top' );
    }
    add_action('init', 'rewrite_init');

    こちらはやはり、リライトルールを更新しても効かず「japan」が表示されてしまう、というのが不思議です。

    まぁ実験のために書いた不要な機能なので効かなくても構わないのですが、なぜ効かないのかお分かりになりますでしょうか?

    フォーラム: 使い方全般
    返信が含まれるトピック: カスタム投稿に子階層URLを作る方法

    日本語版codexで「重要」とあるやつですね。functions.phpの変更後、何も変更せず更新。はい、間違いなくしています。

    1つ前のシンプルなのさえ効かないって、おかしいですよね。

    フォーラム: 使い方全般
    返信が含まれるトピック: カスタム投稿に子階層URLを作る方法

    思い切ってシンプルなのを書いてみたのですが、これは普通に「japan」の方が表示されました。

    function rewrite_init() {
    	add_rewrite_rule( 'http://example.com/country/japan', 'http://example.com/country/ameria', 'top' );
    }
    add_action('init', 'rewrite_init');

    これはもう、add_rewrite_rule自体が作動しないような、何か謎の設定をしているとしか思えませんよね…

    フォーラム: 使い方全般
    返信が含まれるトピック: カスタム投稿に子階層URLを作る方法

    ご丁寧にどうもありがとうございます。

    はっ、➂で分岐させるためにも、➁は必須だったのですね。
    なるほど流れが掴めたような気がします。

    ただご提示のコードで404になってしまうようでした。

    そしてそもそもの話として、先ほどわたしが「➀ができました」と言った次のコードがぜんぜんできておらず、これも404でした。

    function rewrite_init() {
    	add_rewrite_rule('^country/japan/history/?', 'index.php?post_type=country&page_id=$matches[1]', 'top');
    }
    add_action('init', 'rewrite_init');

    ちなみに次も404です。

    function rewrite_init() {
    	add_rewrite_rule( '^country/([^/]+)/(history|character)?$', 'index.php?country=$matches[1]', 'top' );
    }
    add_action('init', 'rewrite_init');

    あとこれは関係ないかもしれませんが…

    「example.com/hoge/japan」や「example.com/fuga/japan」にアクセスすると
    「example.com/country/japan」にリダイレクトされるという現状があります。

    hogeやfugaというカスタム投稿タイプは存在ないしリダイレクト設定もしてないように思うのですが、これはWPの初期設定でしょうか?

    それともわたしが何か謎の設定をしているせいで生じるリダイレクトでしょうか?

    もしかしてこの謎の設定のせいでご提示のコードが404になってしまうということかな?と思い、関係ないかもしれませんが書かせて頂きました。

    もしこれらの少ないヒントから何か対策など思いつくものがあったらまたご意見いただけましたら幸いです。

    フォーラム: 使い方全般
    返信が含まれるトピック: カスタム投稿に子階層URLを作る方法

    現状をまとめますと、➀で「example.com/country/japan/history」へのアクセスできるようになり、➁は不要だと考えて書かず、➂で目的のテンプレートも表示できたものの、上の➂ですと「example.com/country/japan」でも同じテンプレートが表示されてしまいます。

    しかしやりたいこととは、
    「example.com/country/japan」では「post-country.php」を表示し、
    「example.com/country/japan/history」では「post-country-history.php」を表示したい。
    という処理になるのですが…

    この部分について、今一度お知恵を拝借させていただけませんでしょうか。

    長くなってしまって大変申し訳ございません。いつでもご返信お待ちしております。
    宜しくお願いいたします。

    フォーラム: 使い方全般
    返信が含まれるトピック: カスタム投稿に子階層URLを作る方法

    そして次に、ご提示いただいたStackexchangeにあるような「currentpage、catname、pref」という3つがなくても➀ができたということは、➁の判定機能はなくてもよさそうに思いました。

    しかしそれがないと、次の➂がわかりません。

    ↓ ➂ function rewrite_template_include($template)

    function rewrite_template_include($template){     
    	if( get_query_var('post_type')=='country' ){        
    		$template = locate_template(array('post-country-history.php'));
    	}
    	return $template; 
    }

    としてみたのですが、ここで躓いています。

    フォーラム: 使い方全般
    返信が含まれるトピック: カスタム投稿に子階層URLを作る方法

    まず➀は下記で(多分)できまして、これで「example.com/country/japan/history」という存在しないページにアクセスしてもページが表示されるようになりました。

    ↓ ➀ function rewrite_init(){}

    function rewrite_init() {
    	add_rewrite_rule('^country/japan/history/?', 'index.php?post_type=country&page_id=$matches[1]', 'top');
    }
    add_action('init', 'rewrite_init');
15件の返信を表示中 - 1 - 15件目 (全25件中)