サポート » 使い方全般 » 新着記事一覧で、記事ではなく添付ファイルにリンクさせる方法

  • 解決済 yua0209

    (@yua0209)


    loop.phpに関する質問です。
    現在トップページの新着記事一覧に、
    日付・タイトル・カテゴリー名 が表示できるようにしており、
    タイトルをクリックすると、その記事が表示されるという一般的な構造です。

    ただ、「業務連絡」のカテゴリーだけ、紙ベースの業務連絡のPDFのみを投稿しているため、
    記事でなくPDFに直接リンクするようにしたいのです。。

    具体的には、
    現在新着記事一覧で「4月26日の連絡」というタイトルをクリックすると
    wordpress/?renraku=renraku130426 が開き、
    「4月26日の連絡」というリンクだけがある状態です。
    このリンクをクリックすると、renraku130426.pdfが現れます。
    でも、新着記事一覧の「4月26日の連絡」をクリックすれば
    renraku130426.pdfが直接開くようにしたいのです。
    (ちなみに、ページのスラッグとPDFのファイル名は同じにしています。)

    ・業務連絡ページはカスタム投稿タイプにしてありますが、
     新着記事にもでるようにしてあります。
     【loop.php内】

    <?php
    global $wp_query;
    	query_posts(array_merge(
    	    array('post_type' => array('post', 'renraku'),
    	    'posts_per_page' => 5,
    	    	),
    	    $wp_query->query
    	));
    	?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <?php the_time('【Y.n.j】'); ?></span></td>
    <td class="post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <span style="background:darkorange;color:white;font-size:0.6em;"> <?php $cat = get_the_category(); $cat = $cat[0]; {echo "$cat->cat_name " ;} ?>
    <?php $customname = get_post_type_object( get_post_type() )->labels->singular_name;/*ラベルを変数に格納*/
    if($customname !="投稿") { echo $customname; } ?>

    ・カテゴリー一覧(page-renraku.php)を開くと、
    「業務連絡一覧」として、カテゴリー内のタイトル記事が並び、
    タイトルをクリックすればそのPDFが開くようにしています。
    この該当部分のプログラムをloop.phpにコピー&ペーストし、if文で条件分岐させただけでは
    うまくいきませんでした。
    (制作したときも検索しながらよく分からないまま作っており、それから1年以上たってほとんど忘れてしまいました…)

    【page-renraku.phpの該当部分】

    <a href="<?php
    	$files = get_post_meta($post->ID, pdf, false);
    	foreach($files as $file){$file = wp_get_attachment_url($file);
    	echo $file;}
    	?>"><?php the_title(); ?></a>

    なお、編集中のサイトは社内イントラネットのため、URLを貼ることができません。
    わかりづらいかもしれませんが、ご教授いただけると幸いです。
    よろしくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    1.get post type で、投稿タイプの判別を行い
    2. 投稿タイプが renraku だったら、条件分岐でURLを変更

    となります。

    PDFへのリンクは、若干冗長なものの提示のコードでも実用上問題はありませんが、

    <?php echo get_post_meta($post->ID, 'pdf', true) ? wp_get_attachment_url( get_post_meta($post->ID, 'pdf', true) ) : get_permalink(); ?>

    としておくと、PDFの指定を忘れた、などの際にもページへのリンクにでき、リンク切れを防ぐ事ができます。

    ご返答いただいたにもかかわらず、お礼が大変遅くなってしまい申し訳ありませんでした!

    PDFへのリンクはお教えいただいたソースコードに差し替えました。
    ありがとうございます。
    真ん中の ? はなんなのか等、知識不足なのでこちらは勉強します。

     ***

    本題のご回答いただいた部分、

    >1.get post type で、投稿タイプの判別を行い
    >2. 投稿タイプが renraku だったら、条件分岐でURLを変更

    ですが、初心者な上に制作時から時間がたちすぎたため、
    get post typeをどう使うかが調べてもわからず(教えて頂いたのにすみません)、
    結局、該当部分の下でget_post_typeを使っていたため、そちら(カテゴリー名を表示させるための変数)を流用しました。

    結果として、投稿タイプではなくカテゴリー名(function.phpで指定したカスタム投稿タイプのラベル名)で
    条件分岐をすることで、無事任意のカテゴリーでPDFに直リンクができました!

    <?php
    	$customname = get_post_type_object( get_post_type() )->labels->singular_name;/*ラベルを変数に格納*/
    	if($customname =="業務連絡"){
    	echo get_post_meta($post->ID, 'pdf', true) ? wp_get_attachment_url( get_post_meta($post->ID, 'pdf', true) ) : get_permalink();}
    else{echo the_permalink();}
     ?>

    今後のために、投稿タイプでの分岐もできるよう改めて勉強します。
    ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「新着記事一覧で、記事ではなく添付ファイルにリンクさせる方法」には新たに返信することはできません。