特典機能について

パーマリンクに対してメインカテゴリの反映 | 不具合報告 | Cocoon フォーラム

サイト内検索
運営者(わいひら)は、10月25日から手術のため数週間入院します。その際、フォーラム負担軽減のため登録者のみ書き込めるようを制限をさせていただきます。フォーラム未登録の方はこちらの手順で登録を行ってください。準備のため10月18日から12月前半(見込み)まで実施させていただきます。
書き込みの前に以下の3点をご確認ください。
  1. 1つのトピックにつき1つの質問を書き込んでください
  2. 不具合・カスタマイズ対象ページのURLを提示高速化を無効にしてください
  3. 該当部分のキャプチャ・環境情報とともに書き込んでいただけると助かります

何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。

不具合・カスタマイズ対象ページのURL:

相談内容:

解決のために試したこと:

※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:

※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。

環境情報の取得方法はこちら。
https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
https://wp-cocoon.com/theme-trouble/

フォーラム利用ガイドリンク

  1. フォーラムガイドライン
  2. よくある質問と答え(FAQ)
  3. サポート対象外のケース
  4. 原因不明の不具合用トラブルシューティング
  5. トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw
  6. 真っ白画面でのエラーメッセージの確認方法 
  7. ブラウザ環境チェックツール

フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。

また、問題の解決に至った場合には、トピック冒頭の「解決済み」リンクをクリックしていただけますと幸いです。

wpForoの解決済みリンク

また、有用な返信があった場合は「いいね!」リンクもご活用ください。返信者の励みになります。

wpForoのいいねリンク

「いいね!」機能はフォーラム登録者のみが利用できる機能です。

CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。

フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。

最近の書き込みはこちら。

詳細なカスタマイズ依頼をするならこちら。

スポンサーリンク
パーマリンクに対してメインカテゴリの反...
 
共有:
通知
すべてクリア

[解決済] パーマリンクに対してメインカテゴリの反映


tk
 tk
(@tk)
New Member
結合: 4年前
投稿: 4
Topic starter  

お世話になっております。

いつもCocoonを利用させていただいております。tkと申します。

 

不具合というか、要望かもしれませんが、パーマリンク設定で

%category%/%postname%

というような設定をした場合

記事に複数のカテゴリを登録すると、パーマリンクは勝手にカテゴリーIDの一番小さいものが選ばれます。

 

例えば、記事「pasta」にカテゴリ「italian」「umai」の2つを選んだ場合、

umaiのカテゴリIDが小さい場合、以下のようなリンクになってしまいます。

sample.com/umai/pasta

そこで、メインカテゴリーで指定したカテゴリがパーマリンクで選ばれるようにならないでしょうか。

メインカテゴリーで「italian」を選んで、以下のようなリンクにしたいと思っております。

sample.com/italian/pasta

 

調べただけですが、「wp category permalink」というプラグインを使えば指定できるようです。

が、サイトの記事数が多くなった場合、メインカテゴリとプラグインの指定を2つしないといけないので、できればcocoonで対応していただければ非常に助かります。

仕様かもしれませんが、ご検討よろしくお願いいたします<(_ _)>


mk2
(@mk2_mk2)
メンバー Moderator
結合: 7か月前
投稿: 2155
 

不具合ではなくて、要望なのかな。。。と思いました。
(WordPressの仕様のようですし。)

 

WordPress.orgに載っていましたので、リンクしておきます。

「パーマリンクの使い方」-「複数カテゴリにした投稿の %category% と %tag%」

https://ja.wordpress.org/support/article/using-permalinks/#%e8%a4%87%e6%95%b0%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%81%ab%e3%81%97%e3%81%9f%e6%8a%95%e7%a8%bf%e3%81%ae-%category-%e3%81%a8-tag

「WP Category Permalink」というプラグインについても記載があるようですね。

 

それだけ。。。です、すみません。


わいひら 件のいいね!
tk
 tk
(@tk)
New Member
結合: 4年前
投稿: 4
Topic starter  

@mk2_mk2

mk2さん、返信ありがとうございます。

そうですね。ほとんど要望かもしれません

ただ、複数カテゴリを選択した時の挙動で困っている方は多くいて、そのために、cocoonでもメインカテゴリを導入されたと思います。

なので、せっかくメインカテゴリという設定があるのであれば、パーマリンクにも反映していただければと思った次第です<(_ _)>


tk
 tk
(@tk)
New Member
結合: 4年前
投稿: 4
Topic starter  
投稿者:: @tk

お世話になっております。

いつもCocoonを利用させていただいております。tkと申します。

 

不具合というか、要望かもしれませんが、パーマリンク設定で

%category%/%postname%

というような設定をした場合

記事に複数のカテゴリを登録すると、パーマリンクは勝手にカテゴリーIDの一番小さいものが選ばれます。

 

例えば、記事「pasta」にカテゴリ「italian」「umai」の2つを選んだ場合、

umaiのカテゴリIDが小さい場合、以下のようなリンクになってしまいます。

sample.com/umai/pasta

そこで、メインカテゴリーで指定したカテゴリがパーマリンクで選ばれるようにならないでしょうか。

メインカテゴリーで「italian」を選んで、以下のようなリンクにしたいと思っております。

sample.com/italian/pasta

 

調べただけですが、「wp category permalink」というプラグインを使えば指定できるようです。

が、サイトの記事数が多くなった場合、メインカテゴリとプラグインの指定を2つしないといけないので、できればcocoonで対応していただければ非常に助かります。

仕様かもしれませんが、ご検討よろしくお願いいたします<(_ _)>

わいひろ様

お世話になっております。
お忙しいと思いますので、自分なりに関数を作ってみました。
とういうか、ほとんど参考先の方の関数まんまですが・・・

参照: http://lilylila.hatenablog.com/entry/20120802/1343861223

あまり、post_linkフィルタを使ったことがないので、パーマリンクを取得するたびにこのような関数を読んで速度的に問題ないのか、私ではちょっとわかりません。

何かの参考になればと思い、ソースを貼らせていただきました。

ご検討、よろしくお願いいたします。

function hmo_modify_permalink($permalink, $post, $leavename)
{

 /* 書き換えの必要がない場合は即関数を抜ける */
  if ( empty($post->ID) || 
       $post->post_type == 'page' || 
       $post->post_type == 'attachment' || 
       in_array($post->post_type, get_post_types( 
                                array('_builtin' => false) ) ) ) 
  {
       return $permalink;
  }
  
  /* post_metaのparmalink_cat_idにカテゴリIDが登録されていない場合
     は、デフォルトのパーマリンクを使う */
  $permalink_cat_id = '';
  $permalink_cat_id = get_post_meta($post->ID, 'the_page_main_category', true);

  if ($permalink_cat_id == '') {
			return $permalink;
  }

  /* パーマリンク作成、以下はほとんど wp-include/link-template.php
     のget_permalink関数のコピー */
  
  $rewritecode = array(
                '%year%',
                '%monthnum%',
                '%day%',
                '%hour%',
                '%minute%',
                '%second%',
                $leavename? '' : '%postname%',
                '%post_id%',
                '%category%',
                '%author%',
                $leavename? '' : '%pagename%',
  );

  $permalink_str = get_option('permalink_structure');

  if ( '' != $permalink_str && !in_array($post->post_status,
                     array('draft', 'pending', 'auto-draft')) ) {
       $unixtime = strtotime($post->post_date);

       $category = '';
       if ( strpos($permalink_str, '%category%') !== false ) {
       
             /* post_metaのparmalink_cat_idに登録されたidの
                カテゴリを使う */
             if ( $permalink_cat = get_category($permalink_cat_id) ) {
                  $category = $permalink_cat->slug;
                  if ( $parent = $permalink_cat->parent ) {
                       $category = get_category_parents($parent,
                                   false, '/', true) . $category;
                  }
             }
             // show default category in permalinks, without
             // having to assign it explicitly
             if ( empty($category) ) {
                   $default_category = get_category( 
                               get_option( 'default_category' ) );
                   $category = is_wp_error( $default_category ) ?
                                     '' : $default_category->slug;
             }
       }

       $author = '';
       if ( strpos($permalink_str, '%author%') !== false ) {
             $authordata = get_userdata($post->post_author);
             $author = $authordata->user_nicename;
       }

       $date = explode(" ",date('Y m d H i s', $unixtime));
       $rewritereplace =
                       array(
                        $date[0],
                        $date[1],
                        $date[2],
                        $date[3],
                        $date[4],
                        $date[5],
                        $post->post_name,
                        $post->ID,
                        $category,
                        $author,
                        $post->post_name,
                );
                
        /* get_permalink関数で生成した $permalinkをここで上書き */
        $permalink = home_url( str_replace($rewritecode,
                               $rewritereplace, $permalink_str) );
        $permalink = user_trailingslashit($permalink,
                                          'single');        
   } 
   return $permalink;
}

/*テンプレートタグの <?php get_permalink() > が返すリンクを
上書きするフックをかける*/

add_filter( 'post_link', 'hmo_modify_permalink', 10, 3 );

わいひら
(@yhira)
メンバーサイト Admin
結合: 4年前
投稿: 12854
わいひら - Facebookわいひら - Twitter
 

申し訳ないですが、今回出来ればWordPressデフォルトの仕様を変更したくないです。
今回は特にURLが変わってしまうので、これまでの仕様で良い方のサイトでもURLが勝手に変わってしまい、SEO的に影響がある可能性も高いです。
カスタマイズ方法が現在分かっているのであれば、カスタマイズで対応していただければ幸いです。


tk
 tk
(@tk)
New Member
結合: 4年前
投稿: 4
Topic starter  

返信ありがとうございます。

なるほどですね。

確かにURLが意図せず変わってしまう方もいるかもしれないですね。

了解いたしました。


わいひら 件のいいね!
わいひら
(@yhira)
メンバーサイト Admin
結合: 4年前
投稿: 12854
わいひら - Facebookわいひら - Twitter
 

そうなんです。
実際はURLも変更した方が仕様的にはスッキリはするのですが、後からできた機能でURLを意図せず変更させてしまうのは、サイト運営者さんの不利益になる可能性も高くて怖いです 😥 


tk 件のいいね!
共有:
スポンサーリンク
SWELLと業務提携しています
WordPressテーマSWELL
わいひらをフォローする
おすすめサーバー(コスパ・バックアップ重視型)

性能も兼ね備えながら安くブログ運営を開始できる点においてのNo.1。
それでいてブログ成長後は、十分すぎるほどのスペックアップ余力も担保されている。

◎安く始められる
◎LiteSpeedを用いた高速サーバー(完全SSD)
◎http/3(高速化プロトコル)に対応
◎東京・大阪でリージョン選択が可能
◎プランのアップ・ダウングレードが自由自在
◎同サービス内でドメイン管理が可能
◎ディスク容量が多い
◎転送量が多い
◎毎日無料バックアップ(14日分)
◎DBは14日以内なら無料自動復旧可能
◎ファイルも14日以内なら無料自動復旧可能
◎アダルト・出会い系サイト可
◎ドメインとサーバー代のチャージ払いが可能
○サーバ引っ越し依頼が可能(有料)

サービス運営期間:3年

1年以上の契約をする場合は、クーポンコード入力でさらに50%割引キャンペーン中!
※BOX2 ~ BOX8プラン契約の場合

クーポンコード:PK4JK4RJ

クーポンの使用方法はこちら

とにかく速い。サイトに表示スピードを求めるならココ。
管理画面がシンプルで使いやすい。

◎nginxを用いた高速サーバー(完全SSD)
◎プランのアップ・ダウングレードが自由自在
◎同サービス内でドメイン管理が可能
◎ディスク容量が多い
◎転送量が多い
○http/2(高速化プロトコル)に対応
◎毎日無料バックアップ(14日分)
◎DBは14日以内なら無料自動復旧可能
◎ファイルも14日以内なら無料自動復旧可能
◎サーバ引っ越しツールあり(無料)
○サーバ引っ越し依頼が可能(有料)
◎ドメインとサーバー代のチャージ払いが可能

サービス運営期間:3年

安定感抜群のサーバーです。あまり急激なアクセス変動がないアフィリエイトサイトに向いています。

◎nginxを用いた高速サーバー(完全SSD)
◎老舗サーバーなので安定感抜群
◎ディスク容量が多い
◎転送量が多い
◎同サービス内でドメイン管理が可能
○http/2(高速化プロトコル)に対応
○毎日無料バックアップ(14日分)
○DBは7日以内なら無料自動復旧可能
×ファイルは有料かつ手動での復旧
×プラン変更でCPUのスペックアップができない
×プラン変更しても即時反映されない
×アダルト・出会い系サイト不可

サービス運営期間:18年

常に新しいことに挑戦しているフロンティア精神あふるるレンタルサーバーです。
LiteSpeedやHTTP/2を日本で初めて導入したサーバー。

◎LiteSpeedを用いた高速サーバー(完全SSD)
◎http/3(高速化プロトコル)に対応
◎プランのアップ・ダウングレードが自由自在
◎同サービス内でドメイン管理が可能
◎転送量が多い
◎ディスク容量が多い
◎毎日無料バックアップ(14日分)
◎DBは14日以内なら無料自動復旧可能
○ファイルは14日以内なら無料復旧可能(※手動)
◎アダルト・出会い系サイト可
◎ドメインとサーバー代のチャージ払いが可能
○サーバ引っ越し依頼が可能(有料)

サービス運営期間:5年

格安な値段で始められる高機能サーバーです。
性能も備えつつ最安ならここ。
ただし少し機能は弱い。

◎LiteSpeedを用いた高速サーバー(完全SSD)
◎激安プランが用意してある
◎値段あたりのスペックが高い(コスパ良し)
◎サーバ引っ越し依頼が可能(無料)
◎アダルト・出会い系サイト可
○http/2(高速化プロトコル)に対応
△プランのアップは可能だがダウンは不可
△毎日自動バックアップ(1日分)
△前日のバックアップからのみ復元できる(無料)

サービス運営期間:5年

Cocoon
タイトルとURLをコピーしました