web-dev-qa-db-ja.com

特定のWordをデフォルトページのパーマリンクに追加する

今私は私のクライアントのプロジェクトのひとつに取り組んでいます。そのすべてがAmazonの製品展示についてです。私のクライアントは、すべての投稿、ページ、検索結果、アーカイブページ、カテゴリページ、すべてのカスタム投稿タイプページのパーマリンクを変更してほしいと思っています。

私はRewrite APIが初めてです。私はここでwordpressコーデックで提供される文書を読んだことがあります https://codex.wordpress.org/Function_Reference/WP_Rewrite そしてここで https://codex.wordpress.org/Rewrite_API だけでなく、インターネット上でも、物事を明確にすることはできません。

自分のページ用にカスタムパーマリンクを作成する手助けはできますか?

現在のページURLはhttp://mysite.com/?page_id=2デフォルトパーマリンクand http://mysite.com/sample-page/ の場合投稿名が固定リンクの場合は

ページのURLをのようにしますhttp://mysite.com/info/sample-page .

ここでinfoは静的です私のページのURLに追加したいです。

どうすればこれを達成できますか?誰かがこの状況で私を手伝ってくれる?私はすでにこの号で2日間を無駄にしており、すでにこれに取り組んでいる人にとっては本当に簡単なことだと確信しています。

クイックヘルプは大歓迎です。

ありがとう、Aezaz

2
Shaikh Aezaz

フィルターまたはApache/nginxの書き換えを使用するより良い方法があるかもしれませんが、管理UIの観点(未テスト)から検討する2つのアイデアがあります。

アイデア1:

いつでも/wp-admin/options-general.phpにアクセスして、サイトのURL全体を変更できます。

siteurl

しかし、あなたはそれを探しているとは思いません。これはホームのURLも変更するからです。

アイデア2:

したがって、/wp-admin/options-permalink.phpにアクセスして、次のことを試してください。

rewrite

で開始する。

アイデア3:

ページに関しては、infoスラッグで親ページを作成しようとすることができます。

-

これは、あなたが言及したすべてをカバーするわけではありませんが、うまくいけば、これがあなたを助けてくれることを願っています。

更新:

以下に、さらに調査を試みることができるものを示します(これが機能するかどうかはわかりません)。

add_filter( 'rewrite_rules_array', 'my_rewrites' );

function my_rewrites( $rules )
{
    $newrules = array();
    foreach ( $rules as $rule => $rewrite )
    {
        if( '(' !==  substr( $rule, 0, 1 ) )
            $rule = 'info/' . $rule;

        unset( $rules[$rule] );
        $newrules[$rule] = $rules[$rule];
    }
    return $newrules;
}

書き換えルールをフラッシュする必要がありますが、フィルターを介してリンクを変更する必要もあります:post_linkterm_linkpage_linktag_linkdate_link、 ...など.

だからあなたは次のようなものを試すことができます:

// expand this to your needs, but there most be a single filter available instead?
$items = array( 'post', 'page', 'date', 'tag', 'term', 'year', 'month' ); 

foreach( $items as $item )
{
    add_filter( $item . '_link', 'my_link', 99, 2 );
}

function my_link( $permalink, $post ) 
{
   $permalink = str_replace( get_site_url(), get_site_url() . '/info',  $permalink );
    return $permalink;
}

私は利用可能なより良いフックと試してみるためのより良い方法があると思いますか?

これは最初に思い浮かぶことなので、確認して変更してください;-)

1
birgire