• 解決済 sarasarari

    (@sarasarari)


    個別記事を振り分けるために、functions.phpに以下の内容を記述したところ、
    プラグインの追加でエラーが出たり、記事の投稿でエラーが出たりしてしまいます。

    functions.phpを空にするとうまく上記はうまく動作しますが、
    個別記事のテンプレート振り分けができません、
    どうしたらよいでしょうか?

    <?php
    add_filter(‘getarchives_where’, ‘custom_archives_where’, 10, 2);
    add_filter(‘getarchives_join’, ‘custom_archives_join’, 10, 2);

    function custom_archives_join($x, $r) {
    global $wpdb;
    $cat_ID = $r[‘cat’];
    if (isset($cat_ID)) {
    return $x . ” INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)”;
    } else {
    return $x;
    }
    }

    function custom_archives_where($x, $r) {
    global $wpdb;
    $cat_ID = $r[‘cat’];
    if (isset($cat_ID)) {
    return $x . ” AND $wpdb->term_taxonomy.taxonomy = ‘category’ AND $wpdb->term_taxonomy.term_id IN ($cat_ID)”;
    } else {
    $x;
    }
    }

    function wp_get_cat_archives($opts, $cat) {
    $args = wp_parse_args($opts, array(‘echo’ => ‘1’)); // default echo is 1.
    $echo = $args[‘echo’] != ‘0’; // remember the original echo flag.
    $args[‘echo’] = 0;
    $args[‘cat’] = $cat;

    $archives = wp_get_archives(build_query($args));
    $archs = explode(”, $archives);
    $links = array();

    foreach ($archs as $archive) {
    $link = preg_replace(“/href='([^’]+)’/”, “href=’$1?cat={$cat}'”, $archive);
    array_push($links, $link);
    }
    $result = implode(”, $links);

    if ($echo) {
    echo $result;
    } else {
    return $result;
    }
    }

    ; ?>

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • function custom_archives_where の else の中が間違っているように思います。

    トピック投稿者 sarasarari

    (@sarasarari)

    gblsm様

    ご回答をありがとうございました。

    else の中を、return $result; にしたところ、ダッシュボード上でのエラーはなくなりましたが、
    カテゴリー毎のアーカイブがエラーになってしまいました。

    sidebar.phpに、
    $cat_ID = 12;
    wp_get_cat_archives(‘type=monthly’, $cat_ID);
    と記述しております。

    エラーの具体的な内容(メッセージなど)が省略されているのでなんとも言いようがありません。

    それからコードのレイアウトが崩れており読みづらいのと長いのと、おそらく一部が消えているみたいなので、pastebin などの外部サービスを利用していただけませんか。

    もし、

    Notice: Undefined index: cat in…

    などと表示されているのであれば、『custom_archives_join』、『custom_archives_where』の2つの関数の

    if (isset($cat_ID)) {
    

    という条件を見直せばいいかと思います。

    トピック投稿者 sarasarari

    (@sarasarari)

    gblsm様
    x743様

    ご回答をいただきまして、本当にありがとうございます。

    実は先程

    「else の中を、return $result; にしたところ、ダッシュボード上でのエラーはなくなりましたが・・・」

    と書かせていただきましたが、一度ログアウトしてもう一度管理ページへログインしようとすると、
    ログイン画面が表示されない状況に陥ってしまいました。

    お恥ずかしながらwp初心者で、どうしてよいやらわからないことだらけです(泣)
    カテゴリ毎のアーカイブを表示させるためにやりたかったものなのですが、
    残念ながら諦めることにしました。

    せっかくご教授いただいたのに、申し訳ありません。

    カスタム投稿タイプのテンプレートについても、いま悩んでおりますので、
    また別のトピックに投稿させていただきます。
    もし宜しければ、ご教授いただけると幸いです。
    本当にありがとうございました。

    カテゴリ毎のアーカイブを表示させるためにやりたかったものなのですが、

    カテゴリ毎のアーカイブにもいろいろありますが、基本的なものを表示させるだけなら functions.php に追記せずに表示できます。例えばカテゴリーのIDを 123 とすると次のようなURLで:

    http://example.com/wordpress/?cat=123

    ログイン画面が表示されない状況に陥ってしまいました。

    こちらの過去トピックが参考になればと思います。
    function.phpを編集 失敗 ログインできない (5 件の投稿)

    トピック投稿者 sarasarari

    (@sarasarari)

    gblsm様

    ご丁寧に教えていただき、重ね重ね本当にお礼申し上げます。
    私が初心者すぎるばかりに、説明もうまくできず、申し訳ありませんでした。
    一度は挫折してしまいましたが、とてもご親切にしていただき、
    教えていただいた内容で、もう一度挑戦してみようと思い直しました。
    本当に、本当にありがとうございます。

    今はまたカスタム投稿タイプの問題にぶち当たっておりまして・・・
    先程テーマのトピックに質問をたてさせていただきました。
    もしも宜しければですが、除いてみていただけると幸いです。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「functions.phpの記述エラー」には新たに返信することはできません。