質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1033閲覧

wordpressパーマリンクをランダムにしたいです

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2017/12/28 09:20

functions.phpに次のように書いていますが、投稿のパーマリンクがランダムになってくれません。

どこが間違っているか、ご指摘いただけませんでしょうか?

どうぞ宜しくお願い致します。

php

1/** 2 * ▼参考記事 3 * http://wald-grun.biz/blog/wp/3822/ 4 */ 5add_filter('sanitize_title','sanitize_title_numalpha_only',9); 6function sanitize_title_numalpha_only($title) { 7 if(mb_strlen($title) == strlen($title)){ 8 return $title;//2バイト文字が含まれていない場合はそのまま値を返す 9 }else{ 10 return makeRandStr(4);//2バイト文字が含まれていたら乱数を出力 11 } 12} 13/** 14 * ランダム文字列生成 (英数字) 15 * $length: 生成する文字数 16 */ 17function makeRandStr($length) { 18 $str = array_merge(range('a', 'z'), range('0', '9'), range('A', 'Z"')); 19 $r_str = null; 20 for ($i = 0; $i < $length; $i++) { 21 $r_str .= $str[rand(0, count($str))]; 22 } 23 return $r_str; 24}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

2バイト文字がタイトルに含まれていないからでは?
あと、パーマリンクではなくスラッグをランダムにするのでパーマリンク設定がデフォルトだと実際のURLは変わりません。
とりあえず投稿画面で公開した後のスタッグの文字列がどうなっているか確認したらいいでしょう。

追記
ちょっと考えてみました。
このコードだけでランダムなスラッグにします。
タイトルとスラッグが空でなければスラッグを埋めます。
スラッグの文字数はなんとなく8文字固定。
記事を公開後に更新した場合、スラッグに大文字があると小文字になるので大文字はあえて要らないのではないかと思いますが残してます。
問題があれば言ってください。

function my_post( $data , $postarr ) { $str = array_merge(range('a', 'z'), range('0', '9'), range('A', 'Z"')); $r_str = null; for ($i = 0; $i < 8; $i++) { $r_str .= $str[rand(0, count($str))]; } if ( ! in_array( $data['post_status'], array( 'trash', 'auto-draft' ) ) && empty( $data['post_name'] ) ) { $data['post_status'] = 'publish'; $data['post_title'] = ''; $data['post_name'] = $r_str; } return $data; } add_action( 'wp_insert_post_data', 'my_post', 99, 2 );

投稿2017/12/28 09:49

編集2017/12/28 15:22
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/12/28 10:07

ありがとうございます。 >2バイト文字 含んでいます。 >パーマリンク設定 >とりあえず投稿画面で公開した後のスタッグの文字列がどうなっているか 各種指定した通りにしかなりませんでした。 なにか他にヒント頂けませんでしょうか?(>_<)
退会済みユーザー

退会済みユーザー

2017/12/28 10:21

失礼しました。やはりタイトル未入力のためでした。<(_ _)> もし未入力のままでランダムにさせたい場合は、どこを修正すればいいか、教えて頂けませんでしょうか?
退会済みユーザー

退会済みユーザー

2017/12/28 11:12

最終的にどうなればいいのですか? タイトルの有無や文字種に関わらず常にスラッグがランダムな文字列になればいいのでしょうか?
退会済みユーザー

退会済みユーザー

2017/12/28 12:10

実は「WP User Frontend」というプラグインを使っておりまして、通常投稿の際にはランダムになるのですけれど、当該プラグイン利用時にはなぜかランダムになってくれず、困っております。 最終的には当該プラグインを通した投稿URLが(つまりユーザーが投稿した記事のURLが)、ランダムな文字列になってくれれば。と思っております。 そのユーザー投稿時にタイトルを入力させないために、「タイトルなしでもランダムになってほしい」という質問をした次第でした。
退会済みユーザー

退会済みユーザー

2017/12/28 13:05

他に判定すべきものがあるように思いますが詳細が不明なので、Noticeが出ると思いますがとりあえず単純に add_filter('sanitize_title','sanitize_title_numalpha_only',9); function sanitize_title_numalpha_only($title) { return makeRandStr(4); } こうしておけばいいと思います。
退会済みユーザー

退会済みユーザー

2017/12/28 13:26

ランダムになりました!ありがとうございます。 し、しかし、当該プラグインでも通常画面でも、投稿の後になぜか404が表示されてしまいます。でもその404のURLはきちんとランダムになっています。これは大変ですね。。 パーマリンクはそれぞれ試しました。いちおう理想は「/%category%/%postname%/」でして、postnameのところがランダムになってほしいです。というか、ご提示のコードできちんとそうなっているのに、なぜか404が表示されてしまうのです。
退会済みユーザー

退会済みユーザー

2017/12/28 13:29

あ、これは、たしか以前にがんばってなんとかした記憶があります。ちょっと検索してがんばってみます。それでできなければ、、また質問させてくださいませ。笑 夜分に何度もすみませんでした。
退会済みユーザー

退会済みユーザー

2017/12/28 15:31

修正頂いたご回答のやつですんなりできました! 「Permalink Redirect」とかいうプラグインを入れたり、「.htaccessがどうのこうの」とか、かなり悪銭苦闘しておりました。笑 夜分遅くに、何度も誠にありがとうございます。(´;ω;`)ウゥゥ
guest

0

固定リンク先を表示させるだけで、特定カテゴリー内の記事をランダムに表示させる手法と、そのPHPソースを公開します。 WordPress ランダムに、あるカテゴリー内の記事を表示させる手法

投稿2019/09/30 12:32

編集2020/12/07 12:15
Ujiki.oO

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問