web-dev-qa-db-fra.com

Ajouter un mot spécifique à la page par défaut permalien

En ce moment, je travaille sur un projet de mon client. Tout sur l'affichage des produits Amazon. Mon client veut que je modifie les liens permanents de tous les articles, pages, résultats de recherche, pages d'archives, catégories de type, toutes les pages de type d'article personnalisé.

Je suis très nouveau à l'API Rewrite. J'ai lu la documentation fournie sur le codex wordpress ici https://codex.wordpress.org/Function_Reference/WP_Rewrite et ici https://codex.wordpress.org/Rewrite_API ainsi que sur l'internet mais ne peut pas rendre les choses claires.

Quelqu'un peut-il m'aider à générer des permaliens personnalisés pour mes pages?

Pour le moment,L'URL de la page ressemble àhttp://monsite.com/?page_id=2si son permalien par défautet http: //monsite.com/sample-page/si son nom de poste est permalien.

I veut que l'URL de la page ressemble àhttp://monsite.com/info/sample-page .

Iciinfoest un mot statique que je veux ajouter à mon URL de page.

Comment puis-je atteindre cet objectif ? Quelqu'un peut-il m'aider dans cette situation? J'ai déjà perdu mes 2 jours dans ce numéro et je suis sûr que c'est vraiment simple pour celui qui a déjà travaillé avec cela.

Aide rapide très appréciée.

Merci Aezaz

2
Shaikh Aezaz

Il y aurait peut-être de meilleures façons d'utiliser des filtres ou des réécritures Apache/nginx, mais voici deux idées à prendre en compte du point de vue de l'interface utilisateur administrative (non testées):

Idée 1:

Vous pouvez toujours visiter /wp-admin/options-general.php changer l’ensemble du site:

siteurl

mais je ne pense pas que vous cherchiez cela, car cela changerait également l'URL de votre maison.

Idée 2:

Vous pouvez donc visiter /wp-admin/options-permalink.php et essayer les solutions suivantes:

rewrite

commencer avec.

Idée 3:

En ce qui concerne les pages, vous pouvez essayer de créer un parent page avec le slug info.

-

Cela ne couvrira pas tout ce que vous avez mentionné, mais j'espère que cela vous aidera tout au long du processus.

Mettre à jour:

Voici quelque chose que vous pouvez essayer d'explorer davantage (je ne suis pas sûr que cela fonctionne même):

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;
}

Vous devez vider les règles de réécriture, mais vous devez également modifier les liens au moyen des filtres: post_link, term_link, page_link, tag_link, date_link, ... etc.

Pour que vous puissiez essayer quelque chose comme:

// 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;
}

Je suppose qu'il y a de meilleurs crochets disponibles et de meilleures façons d'essayer?

C’est ce qui vous vient à l’esprit en premier lieu, veuillez donc le vérifier et le modifier ;-)

1
birgire