こんにちは
「事前」というのがいつの前かにもよりますが、ご質問を言い換えれば
「img タグに記述するためのアップロード画像の URL を知ることができるか?」
ということで合っているでしょうか?
画像のURLを知ることができれば、ご自身でギャラリーの HTML を記述して任意の画像の順で並べることができるのではないでしょうか。
画像の URL はメディアライブラリで画像を選択し、「ファイルの URL」で確認することができます。
回答ありがとうございます。質問が分かりづらく申し訳ありません。
おっしゃるように、確かに画像単体のURLであればファイル名称を元に、事前にマークアップしておくことはできます。
そうではなく、私がやりたいのはギャラリーを事前にマークアップしておく方法です。
もう少し具体的に状況をお話します。
フォルダにある aaa.jpg, bbb.jpg, ccc.jpg という3つの画像について、
・各画像単体で表示させる
・ギャラリーとして表示させる
の2つをやりたかったとします。
最初の単体で表示させる分にはご回答の通り、
アップロードする前から各画像のタグは分かりますので、
事前に3つの画像のマークアップは可能ですでに実現できています。
問題は2つ目のギャラリーとして表示させる場合で、
ギャラリーに使用される画像のIDは画像アップ後に割り振られる(と理解しています)ため、
例えば上の3つが順番に格納されたギャラリーを事前にマークアップしておきたくても、
[gallery link="file" columns="4" size="large" ids="???,???,???]
における???はアップしてから初めて分かるものなので、事前にマークアップを済ませておくことができません。
私の質問はご理解頂けましたでしょうか?
ギャラリーの仕様について私は上記の様に理解しています。
個人的な予想ですが、画像アップ後にidが割り当てられる以上、事前にマークアップを済ませておくことは
不可能ではないかな?と考えており、それを確かめるために質問させて頂いております。
もしも、事前にギャラリーのマークアップができる方法があれば
具体的なコードの例を示していただけると大変ありがたいです。
こんにちは、
画像単体なら、text エディタで開いた時に、htmlソースが見えるので、変更もできるけど、
ギャラリーだと、text エディタで開いても、ショートコードが表示されるだけでソースが見えないくて、作業が面倒くさいという事でしょうか?
もしそういう事で、クラッシクエディタを使っているのであれば、
フィルターを追加すれば、エディタ内で、HTMLソースを見ることができるようになると思います。
add_filter( 'format_for_editor', 'function_name' );
function function_name( $return_value ) {
$content= get_post_field('post_content', get_the_ID());
return do_shortcode( $content );
}
余談ですが、ギャラリーは、テーマの設定によっては、dl要素を使って表示する場合と、figure要素で表示することもあります。
サイドバーのギャラリーは、それはそれで、HTMLは異なったと思いますので注意してください。
回答ありがとうございます。
なるほど、ショートコードの実態を表示させる方法があるということですね。
上記のコードはどこに設置させてどのように反映させるものでしょうか?
function.phpに記述させれば良いですか?
functions.php に記述します PHPコードです。
ありがとうございます、上記のコードを反映させた後、ショートコードの仕組みが理解できました。
これなら画像名から事前にマークアップできそうです。
Chromeなどの検証で表示されるDOMも最終的にこのようなショートコードが展開されて表示されるわけですね。色々と理解が深まりました。
最後に1つ、追加で質問させて頂きたいのですが、
同じギャラリーを作成するとして、
・投稿にショートコードを用いて表示させる場合と、
・ショートコードを用いずに純粋なマークアップだけで作成する場合
とで、ブラウザでの表示速度や、その他、違いが生じる部分はありますでしょうか?
厳密にいえば、ショートコードはPHPなので、多少差が出るのかもしれませんが、一番は複数の画像を表示するので、それが表示速度に一番影響与えるのではないかと思います。
なので、ブラウザの表示範囲外の画像を遅延ロード(lazyload)とか、画像フォーマットの工夫などの方が効果ははっきりと表れると思います。
御両名とも回答頂き大変助かりました。
WPの知識が深まりました。