teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2017/12/28 15:22

投稿

退会済みユーザー
answer CHANGED
@@ -1,3 +1,27 @@
1
1
  2バイト文字がタイトルに含まれていないからでは?
2
2
  あと、パーマリンクではなくスラッグをランダムにするのでパーマリンク設定がデフォルトだと実際のURLは変わりません。
3
- とりあえず投稿画面で公開した後のスタッグの文字列がどうなっているか確認したらいいでしょう。
3
+ とりあえず投稿画面で公開した後のスタッグの文字列がどうなっているか確認したらいいでしょう。
4
+
5
+ 追記
6
+ ちょっと考えてみました。
7
+ このコードだけでランダムなスラッグにします。
8
+ タイトルとスラッグが空でなければスラッグを埋めます。
9
+ スラッグの文字数はなんとなく8文字固定。
10
+ 記事を公開後に更新した場合、スラッグに大文字があると小文字になるので大文字はあえて要らないのではないかと思いますが残してます。
11
+ 問題があれば言ってください。
12
+ ```
13
+ function my_post( $data , $postarr ) {
14
+ $str = array_merge(range('a', 'z'), range('0', '9'), range('A', 'Z"'));
15
+ $r_str = null;
16
+ for ($i = 0; $i < 8; $i++) {
17
+ $r_str .= $str[rand(0, count($str))];
18
+ }
19
+ if ( ! in_array( $data['post_status'], array( 'trash', 'auto-draft' ) ) && empty( $data['post_name'] ) ) {
20
+ $data['post_status'] = 'publish';
21
+ $data['post_title'] = '';
22
+ $data['post_name'] = $r_str;
23
+ }
24
+ return $data;
25
+ }
26
+ add_action( 'wp_insert_post_data', 'my_post', 99, 2 );
27
+ ```