すべての投稿を最小限のフォーマットで出力するページテンプレートがあります。ヘッダー、フッター、サイドバーなどはありません。
このループでは、the_content()
を使ってコンテンツ(テキストと画像)を出力します。
すべての画像を「フル」または「大きい」サイズで出力する必要があります。現在、ループ内のthe_content()
は、これに似たimgタグを返しています - 常にサムネイルです。
<img
src="https://www.example.com/wp-content/uploads/sites/21/2016/10/sample-picture-150x150.jpg"
class="attachment-thumbnail size-thumbnail" alt=""
size="full" width="150" height="150">
これにより、画像の解像度が必要以上に低くなります。
wp_get_attachment_image_attributes
フィルタを使用してsize属性を 'full'に強制しようとしましたが、うまくいきませんでした。
function my_fix_attachment_size($attr, $attachment, $size) {
// Full width header images
$attr['size'] = 'full';
return $attr;
}
add_filter('wp_get_attachment_image_attributes', 'my_fix_attachment_size', 10 , 3);
フルサイズの画像を出力するためのthe_content()
の入手方法は?投稿には画像やギャラリーがある可能性があるので、両方を処理する必要があります。
画像サイズを設定/変更する必要はありませんが、生成されたページでフルサイズを強制するだけです。生成されたページはドキュメントの作成に使用されるため、ビューポートサイズについても心配しません。
追加
多くのグーグルと期限切れの後、私は私のために働く解決策を思い付きました(答えとして以下)。もっと良い方法があると私は思うが、これが私のために働いた唯一の方法です。
追加の回答が歓迎されています。
このコードは機能しますが、より効率的になるか、またはより良いフィルタに置き換えられる可能性があります。私はこの質問に対する答えからこのコードを修正しました。それは私が試して何時間も費やしたすべてのグーグルの中から最良の選択でした。 ここにリンクの説明を入力してください
あなたは(2つの場所で)あなたが欲しいサイズに 'full'を変える必要があるでしょう。必要に応じて他の配列要素を変更することもできます( 'extract'関数の後)。
私はこれを行うためのより簡単でより効率的な方法に寛容です。
function change_image_size ($output, $attr) {
global $post; // needed to use in the id element
extract(shortcode_atts(array(
'order' => 'ASC',
'orderby' => 'menu_order ID',
'id' => $post->ID,
'itemtag' => 'dl',
'icontag' => 'dt',
'captiontag' => 'dd',
'columns' => 3,
'size' => 'thumbnail',
'include' => '',
'exclude' => ''
), $attr));
// here's where you can change/add an attribute to the shortcode
$attr['size'] = 'full'; // change 'full' to desired size
$id = intval($id);
if ('Rand' == $order) {
$orderby = 'none';
}
if (!empty($include)) {
$include = preg_replace('/[^0-9,]+/', '', $include);
$_attachments = get_posts(array('include' => $include,
'post_status' => 'inherit', 'post_type' => 'attachment',
'post_mime_type' => 'image', 'order' => $order,
'orderby' => $orderby));
$attachments = array();
foreach ($_attachments as $key => $val) {
$attachments[$val->ID] = $_attachments[$key];
}
} elseif (!empty($exclude)) {
$exclude = preg_replace('/[^0-9,]+/', '', $exclude);
$attachments = get_children(array('post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby));
} else {
$attachments = get_children(array('post_parent' => $id,
'post_status' => 'inherit', 'post_type' => 'attachment',
'post_mime_type' => 'image', 'order' => $order,
'orderby' => $orderby));
}
if (empty($attachments)) {
return '';
}
// Essentially these are only changes I've made
// you can change the $output to your needs; including changing 'full' to your desired image size.
$output = '';
foreach ($attachments as $att_id => $attachment) {
$output .= '<figure>' . wp_get_attachment_image($att_id, 'full') .
'<figcaption>' . wptexturize($attachment->post_excerpt) .
'</figcaption></figure>';
} // change 'full' to desired size
return $output;
}
add_filter('post_gallery', 'change_image_size', 10, 2);