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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2657閲覧

日付順にソートする方法

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/03/04 21:39

編集2018/03/04 21:40

###■目的
WordPressでタームの日にちをソートしたいです。

※ただし、タームは「01/01」でなく「1/1」で入力しています。

###■現状
まず出力されるHTMLはこちらです。

html

1<div class="day-area"> 2<li class="day"><a href="xxx">1/1</a></li> 3<li class="day"><a href="xxx">10/1</a></li> 4<li class="day"><a href="xxx">2/1</a></li> 5</div>

1/1、2/1、10/1
と日付順に表示したいのに、

1/1、10/1、2/1、
と数字順で表示されてしまうのです。

###■試したこと
まず下記のjavascriptを書いてみたのですけれど、ぜんぜんソートしてくれません。(>_<)

javascript

1(function($){ 2 $(function(){ 3 $(document).ready( function(){ 4 var arr = document.querySelector(".day"); 5 6 arr.sort(function(a,b) { 7 return (a.date < b.date ? 1 : -1); 8 }); 9 10 }); 11 }); 12})(jQuery); 13

次に下記のphpです。これはソートできたのですが、これでは日付ターム一覧のアーカイブページの表示において不具合(1つの記事しか表示されず、javascriptも読み込まない、など)が起こってしまうのでダメです。

php

1<div class="day-area"> 2 <?php 3 // タームを表示する関数 4 $terms = get_the_terms($post->ID,'tag_day'); 5 usort($terms, 'tag_day_sort'); 6 foreach ( $terms as $term ) { 7 echo '<li class="day"><a href="'.get_term_link($term).'">'.$term->name.'</a></li>'; 8 } 9 // 並べ替えの関数 10 function tag_day_sort($arg1, $arg2) { 11 $time1 = strtotime($arg1->name); 12 $time2 = strtotime($arg2->name); 13 if ($time1 == $time2) { return 0; } 14 return ($time1 < $time2) ? -1 : 1; 15 } 16 ?> 17</div>

以上2つ以外の方法を募集しております。
よろしくお願い致します。m(_ _)m

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

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

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

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

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

m.ts10806

2018/03/05 00:38

「数字順で表示されてしまう」もそうですし2つ目もそうですが、原因を究明せずに「このやり方はダメだ」と判断するのは勿体無いと思います。いずれも想定通りいかない原因があり想定通りいかないように組んでしまっている、ということだと思います。いずれかの案で原因と解消法を突き詰めてはどうでしょうか?
退会済みユーザー

退会済みユーザー

2018/03/05 00:50

なるほど!大変ありがたいご指摘だと思います。ありがとうございます。
guest

回答1

0

ベストアンサー

流れだけ

javascript

1$(function(){ 2 $('li.day').get().sort(function(x,y){ 3 var s=[x,y].map(function(z){ 4 return $(z).find('a').text().replace(/(\d+)/(\d+)/,function(){ 5 return ("0"+arguments[1]).substr(-2)+("0"+arguments[2]).substr(-2); 6 }); 7 }); 8 return s[0]>s[1]; 9 }).forEach(function(x){ 10 $(x).closest('.day-area').append(x); 11 }); 12});

投稿2018/03/05 00:48

yambejp

総合スコア114843

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

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

yambejp

2018/03/05 00:54

ちなみに月が必ず1月から始まっているとはかぎらないと思うのですが いまいち方針がわかりません
退会済みユーザー

退会済みユーザー

2018/03/05 00:59

さっすがですね。ありがとうございます! はい、おっしゃるとおり、月は記事ごとにバラバラですけれど、え?なにか問題ありそうでしょうか?(;'∀') 蛇足ですけれど経緯としては、「1つの記事にいくつかの日にちのタームが付随していて、記事公開画面でそのタームを日にち順に並べたいな」と思っておりました。でも「01/01」とゼロがつくのって、なんだか変だぁと思いましたので。
yambejp

2018/03/05 01:01

えーと、12月の次に1月の記事をもっていきたいとかないのかな?という話です
退会済みユーザー

退会済みユーザー

2018/03/05 01:04

あ、それは大丈夫です。しかしさっっすがの先読みですね。素敵なお心遣い、とても助かります。どうもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問