複数の書き換えルールが PHP カスタム記事にリンクします。
P粉393030917
2023-07-27 12:19:25
<p>私は PHP を初めて使用するので、いくつかのリンクの構造を変更するためにいくつかの書き換えルールを実行しようとしています。見つかったコードをいくつか試してみましたが、このコードは for ループで指定した最初のカスタム投稿タイプに対してのみ機能します。指定したすべてのカスタム投稿タイプ (これらの投稿タイプの名前は配列内にあります) のリンクを変更する for ループを作成したいのですが、書き換えルール コードは次のとおりです。 </p>
<pre class="brush:php;toolbar:false;">function mycustomname_link($post_link, $post = 0) {
if($post->post_name === $name_of_my_post) {
return home_url('new' .'/'. 'posts'.'/'. $post->post_name .'/'. $post->ID . '/');
}
それ以外{
$post_link を返します;
}
}
add_filter('post_type_link', 'mycustomname_link', 1,3);
関数 mycustomname_rewrites_init(){
add_rewrite_rule('new/posts/([^/] )/([0-9] )?$', 'index.php?post_type=nature_posts&p=$matches[1]&p=$matches[2] '、 '上');
flash_rewrite_rules();
}
add_action('init', 'mycustomname_rewrites_init');
</pre>
<p>関数内に return ステートメントがあるため、最初の反復と最初のカスタム投稿名にのみ書き換えルールが適用されるようですが、指定されたすべての post_names で機能するように for ループを作成するにはどうすればよいですか?最初の反復で停止しないのですか? </p>
これを試してみてください:
mycustomname_link 関数に、$custom_post_types 配列を走査するループを追加しました。カスタム投稿タイプごとに、現在の投稿タイプが配列内のいずれかの名前と一致するかどうかを確認します。一致する場合は、書き換えルールが適用されます。
同様に、mycustomname_rewrites_init 関数に、すべてのカスタム投稿タイプの書き換えルールを登録するループを追加しました。各カスタム投稿タイプには独自の書き換えルールがあります。
この変更により、最初の反復で停止することなく、$custom_post_types 配列で指定されたすべてのカスタム投稿タイプに書き換えルールが適用されます。書き換えルールに含めるすべてのカスタム投稿タイプの名前で $custom_post_types 配列を更新してください。
リーリー