私は "醜い"パーマリンクを使っていますが、それらはindex.phpとsingle.phpでは問題ありません。私はarticle/postレベルでサイドバーを構築するsidebar.phpというテンプレートもあります。サイドバーのカテゴリとタグをクリックすると、404が返されます。実際のフォーマットは次のとおりです。
http:// localhost/mywebsite/tag/mytag
http:// localhost/mywebsite/category/mycategory
私が醜いパーマリンクを期待しているのとは対照的に(そしてそれはindex.phpとsingle.phpに示されています):
http:// localhost/mywebsite /?tag = 1
http:// localhost/mywebsite /?cat = 3
私のタグはこのように定義されています:
function printTags($tags){
if ($tags!=false) {
$return = '';
foreach ($tags as $i){
$return .= '<li><a href="' . home_url() . "/tag/" . $i->slug . '">' . $i->name . '</a></li>';
}
return $return;
}
}
function getTags($tagData){
$tagArray = [];
if($tagData!=false){
foreach ($tagData as $i){
array_Push($tagArray, $i->name);
}
}
return $tagArray;
}
私のHTML/PHPは以下の通りです。
function newSuggestion($itemTitle, $sectionSlug, $section, $image, $url, $tags){
echo "<li class='row class'>
<div class='col item'>
<div class='row img-container'>
<div class='col'>
<a href='{$url}'><img src='{$image}' alt='No Image'/></a>
</div>
</div>
<div class='row anotherclass'>
<div class='categories-container'>
<strong><a href='". home_url() ."/category/". $sectionSlug."'>{$section}</a></strong>
</div>
<div class='tags-container'>
<ul class='tags'>". printTags($tags) ."</ul>
</div>
</div>
<div class='row title-container'>
<h2 class='h3'><a href='{$url}'>{$itemTitle}</a></h2>
</div>
</div>
</li>";
}
どこが悪いの?
ありがとうございました
EDIT1:
これがsidebar.phpのgetPosts関数です。
function getPosts($posts, $numSuggestion){
foreach ( $posts as $post ) {
if ($post->ID!=get_the_ID() && $GLOBALS['currentSuggestion']<$numSuggestion && !in_array($post->ID, $GLOBALS['$alreadySuggested'])){
$imageUrl = wp_get_attachment_url( get_post_thumbnail_id($post->ID));
if ($imageUrl == false){
$imageUrl = getDefaultImage();
}
newSuggestion($post->post_title, get_the_category($post->ID)[0]->slug, get_the_category($post->ID)[0]->name, $imageUrl, get_permalink($post->ID), get_the_tags($post->ID));
$GLOBALS['currentSuggestion']++;
array_Push($GLOBALS['$alreadySuggested'], $post->ID);
}
}
}
EDIT2:
私はこれを試みました:
<div class='categories-container'>
<strong><a href='". home_url() ."/category/?cat=". $cat_ID."'>{$section}</a></strong>
</div>
しかし成功しなかった、それは正しい方向です。カテゴリのURLを "home_url/category /?cat = 123"の形式で取得するには、どこで変更を加えますか。
編集3:
私は正しい方向に向かっているのかどうかわからないが、私は正しいURLを取得することができた、しかしそれは404を返します(記事/ホームレベルのカテゴリとは対照的に)
get_the_category
がスラッグではなくcat_IDにマッピングされるようにgetPosts関数を修正しました(これが正しい方法であるかどうかはわかりません)。
newSuggestion($post->post_title, get_the_category($post->ID)[0]->cat_ID, get_the_category($post->ID)[0]->name, $imageUrl,
それで私のnewSuggestion関数は次のようになります。
<div class='categories-container'>
<strong><a href='". home_url() ."/category/?cat=". $sectionSlug."'>{$section}</a></strong>
</div>
同じURLがサイトの他の部分(例:home/indexやarticle)で機能しているのに、なぜ私がまだ404を打っているのかという考えはありますか?
編集4:
私はついにこれを使って作業するカテゴリーを得ました:
<div class='categories-container'>
<strong><a href='". get_term_link( $sectionSlug) . "'>{$section}</a></strong>
</div>
タグの提案に従って、カテゴリが機能するようになりました。
スラッグではなく、カテゴリをcat_IDにマッピングすることによって、getposts関数を修正しました。
newSuggestion($post->post_title, get_the_category($post->ID)[0]->cat_ID, get_the_category($post->ID)[0]->name, $imageUrl,
その後、NewSuggestion関数はこのようにしてカテゴリーを解決します。
<div class='categories-container'>
<strong><a href='". get_term_link( $sectionSlug) . "'>{$section}</a></strong>
</div>
アプローチはうまくいきます、それをどのように改善するかについてのどんな提案または推薦も歓迎以上です。
の代わりに:
home_url() . "/tag/" . $i->slug
get_term_link()
関数を使用します。現在の設定に従って用語のリンクを返します。
// Assuming $i is a term object
get_term_link( $i->term_id )
たとえば、printTags()
関数は次のようになります。
function printTags($tags){
//Check to see if tags are provided
if ($tags!=false) {
$return = '';
foreach ($tags as $i){
$return .= '<li><a href="' . get_term_link( $i->term_id ) . '">' . $i->name . '</a></li>';
}
return $return;
}
}