フォーラムへの返信

15件の返信を表示中 - 271 - 285件目 (全297件中)
  • スレッド開始 mizube

    (@mizube)

    更に追記です。

    $wp_query->request を $wpdb->get_results() してみましたが、
    同じく ORDER BY が利いていない結果になりましたので、
    やはり SQL の構文のどこかに問題があるか、
    MySQL のバージョン自体に問題があるかのいずれかであると思われましたが、
    どうも cat 引数で除外するカテゴリのみを指定した場合の SQL 文で
    ORDER BY がうまく動かないようです。
    他のサーバーでのテストも含め、もう少し詳しく調べてみます。

    フォーラム: 使い方全般
    返信が含まれるトピック: [WP2.6.1]リッチテキストエディターの利用で

    上記のコードを書いたものですが、
    一応、WordPress 2.6.1 ですが私の環境では動作しています。
    ですので原因が分かりません。すみません。。。
    プラグインを一度無効→有効にするとか、ブラウザのキャッシュを削除してみてください。

    スレッド開始 mizube

    (@mizube)

    追記です。
    他のサーバーの組み合わせには、PHP5.2.1 と MySQL 5.0.23 という環境もあります。
    そちらでも問題は発生していないように見えます。

    ただ、環境はなんとなく原因ではない気がするので、もう少し自分でも詳しく調査してみます。

    フォーラム: テーマ
    返信が含まれるトピック: themesのimageに入っている画像

    stylesheet_directory は style.css のあるディレクトリ、 template_directory はテンプレートのディレクトリになります。

    通常は同じディレクトリになりますが、 style.css の Template: にて、以下のように style.css とは別のディレクトリをテンプレートのディレクトリとして指定している場合には、両者の出力結果が異なってきます。

    /*
    Template Name: Your Theme
    Description: your-theme ディレクトリにこの style.css が設置されているとします。
    Author: You
    Template: default
    */

    template_directory : default がテンプレートのディレクトリに指定されているので
    http://example.com/wp-content/themes/default
    stylesheet_directory : style.css が設置されているディレクトリなので
    http://example.com/wp-content/themes/your-theme

    ただし、 stylesheet_directory は WP 2.3.1 から非推奨になっているはずなので、 WP 2.5.1 をお使いの BB7 さんの場合は template_directory で正解です。

    テンプレートタグでは、 (more…) 部分のテキストを変更することは出来ますが、
    そのマークアップを変更することは出来ません。

    例えば wp.Vicuna テーマでは、 functions.php に
    (more…) 部分を正規表現で置換するフィルターが用意されています。
    それで love040221 さんがお望みの結果が得られると思いますので、
    wp.Vicuna を参考にされてはいかがかと思います。

    個人的には、ですが、 wp.Vicuna にはその他にも参考になる点が沢山あります。

    <?php
    /*
    Plugin Name: Set TinyMCE Block Formats
    Description: リッチエディタのフォーマット選択コントロールの設定(h1,h2 を削除)
    Author: mizube
    */
    
    function set_tinymce_blockformats( $initArray ) {
        // default : "p,pre,address,h1,h2,h3,h4,h5,h6"
        $initArray['theme_advanced_blockformats'] = "p,pre,address,h3,h4,h5,h6";
        return $initArray;
    }
    
    add_filter( 'tiny_mce_before_init', 'set_tinymce_blockformats' );
    
    ?>

    プラグインで実現するシンプルな例です。参考にしてみてください。
    適用されない場合はブラウザにキャッシュが残っている場合があります。

    フォーラム: 使い方全般
    返信が含まれるトピック: 投稿日とタイトルを表示

    だいたい原因が理解できました。

    query_posts() は WordPress ループを変更するためのものですから、
    query_posts(); と WordPress ループを用いたアーカイブメニューのループが、
    メインの記事のループの前に設置されている場合、
    メインの記事の表示条件も query_posts(); によって変更されてしまいます。
    makoto-t さんの当初の場合、 query_posts(); に渡す引数で showposts=10 としていたので、
    メイン記事は 11 件目以降の記事ということになるので、何も表示されなかったわけです。

    query_posts(); で条件を指定したアーカイブメニューのループを先に設置し、
    その後にメイン記事のループを設置させたい、という場合には、
    メイン記事のループの直前に
    <?php query_posts($query_string); ?> とすることで、大抵の場合は OK です。

    一方で、 get_posts(); は WordPress ループの条件を変更しません。
    渡せる引数が query_posts(); と異なりますが、
    アーカイブメニューにこちらを使えば、テンプレート上の位置を気にしなくて済みます。
    get_posts(); でのアーカイブメニューの例は、前回の投稿に書きましたとおりです。

    また get_posts(); でメイン記事のループを定義してしまうと、
    「前のページ」「次のページ」を表示してもメイン記事が変わらないなど、
    弊害があるかもしれません。get_posts(); を使ったループでは
    メイン記事のテンプレートを記述しないことをお勧めします。

    というわけで、見た目は解決しているかもしれませんが、
    アーカイブメニューのループに get_posts(); を使い、
    メイン記事のループに WordPress ループを使った方がいいのではないかと思います。

    すみません、説明が足りなかった上に、返信が遅くなってしまいました。

    get_query_var(‘cat’) は カテゴリーの ID を返します。
    したがって、

    <?php
    $cat = get_query_var('cat');
    $cat = $cat[0];
    $cat = $cat->cat_ID;
    $posts = get_posts('order=asc&category=$cat&numberposts=10');
    ?>

    ではなく、

    <?php
    $cat = get_the_category();
    $cat = $cat[0];
    $cat = $cat->cat_ID;
    $posts = get_posts("order=asc&category=$cat&numberposts=10");
    ?>

    もしくは

    <?php
    $cat = get_query_var('cat');
    $posts = get_posts("order=asc&category=$cat&numberposts=10");
    ?>

    としてください(、そして後者の方が手っ取り早いかも、という意味のつもりでした)。
    それから、シングルクォート (‘) とダブルクォート (“) の違いにも気をつけてください。
    シングルクォートの中では $cat などの変数が展開されませんよ。

    フォーラム: 使い方全般
    返信が含まれるトピック: 画像の投稿関係について

    image_send_to_editor は知りませんでした。
    可能ならばそちらのフックの方がいいかもしれませんね。

    それから、自分の書き込みを読み返してみて、
    少し偉そうというか、挑発的ともとれる文面になっていることに気付きました。
    shokun0803 さんをはじめ、皆さん不愉快な思いをされたのではと思います。すみません。
    そういうつもりではなかったので、追伸してお詫びします。

    フォーラム: 使い方全般
    返信が含まれるトピック: 画像の投稿関係について

    alt 属性を無視しているのではなくて、 alt 属性でポップアップ表示しないだけですよ。
    alt 属性について XHTML の規格にポップアップ表示せよと書いてあるわけではありません。
    firefox では代替テキストとしての必要な機能は十分に実装されています。
    また alt 属性をポップアップ表示させるためのアドオンも存在します。

    タイトルは title 属性、代替テキストとしたいものは alt 属性でいいでしょう。
    アップロードしたファイルにタイトルが必須なのは、メディアライブラリー等での便宜の問題ではなかったかと思います。
    また XHTML の仕様を遵守する心構えのある人にとって、キャプション欄を入力することはそれほどの手間でしょうか?
    私は現在の WordPress の仕様で十分であると思います。

    そして、現在の仕様がお気に召さないとして shokun0803 さんがお望みの出力結果 (title=””) になるようにするには、 the_content に対するフィルターを使うのが最適解だと思うのですがいかがでしょうか?

    フォーラム: 使い方全般
    返信が含まれるトピック: テンプレートの指定方法
    <?php
    function in_category_family( $parent ) {
        if ( empty($parent) )
            return false;
    
        if ( in_category($parent) )
            return true;
    
        $parent = get_category($parent);
        foreach ( (get_the_category()) as $child ) {
            $child = get_category($child->cat_ID);
            if ( cat_is_ancestor_of($parent, $child) )
                return true;
        }
    
        return false;
    }
    ?>

    というような関数を作ってみるといいのではないかと思います。

    <?php
    if ( function_exists('in_category_family') && in_category_family(1) )
        echo "この投稿は、カテゴリー 1 か、その子カテゴリのいずれかに属しています。";
    ?>

    この例ですと、テンプレートにおける場合分けの際、
    親カテゴリーのIDだけはどうしても指定する必要がありますので、
    期待されている方法ではないかもしれませんが。

    get_posts() の引数にある category で指定する値はカテゴリーの ID であるべきです。
    したがって渡すべきは、 $cat->cat_name ではなく $cat->cat_ID ですね。

    また、上記の例では省略されていますが、投稿が複数のカテゴリーに属している場合には、
    $cat[0] が表示させたいカテゴリーのオブジェクトであるとは限りません。
    カテゴリーページについて言えば、 get_the_category() は使わないで、

    $cat = get_query_var('cat');

    とした方が手っ取り早いかもしれません。

    フォーラム: 使い方全般
    返信が含まれるトピック: 投稿日とタイトルを表示

    説明ありがとうございます。なるほど、不可解ですね。

    それでは、サーバー関係は lilyfan さんにお任せして、
    私は何故このテンプレートでうまく動作しないのかを探りたいと思います。
    (サーバーの問題という結論になる可能性が高いかもしれませんけど^^; )
    makoto-t さんには、私が不勉強なためまともに回答できず申し訳ありませんが、
    もう少しお付き合いいただければと思います。

    まず確認なのですが、 get_posts(); のテンプレートは

    <ul>
    <?php
    $posts = get_posts();
    foreach ($posts as $post) :
    setup_postdata($post);
    ?>
    <li><a href="<?php the_permalink(); ?>"><strong><?php the_time('Y年n月j日'); ?></strong><br />
    <?php the_title_attribute(); ?></a></li>
    <?php endforeach; ?>
    </ul>

    のようになると思いますが、 get_posts(); に渡す引数はどんなものですか?
    それと今気付いたのですが、引用されたコード

    <ul>
    <?php query_posts('showposts=10'); ?>
    <?php if (have_posts()):while(have_posts()):the_post(); ?>
    <li><a href=""><strong><?php the_date('Y年n月j日'); ?></strong>
    <?php the_title_attribute(); ?></a></li>
    <?php endwhile; endif; ?>
    </ul>

    ですが、 HTML の a 要素の href 属性が空になっています。
    もしテンプレートから直接引用されたものであるなら、
    URL のテンプレートタグの挿入漏れということはありませんか?
    また、 「アーカイブメニュー」についてもう一点、このループは、
    メインの記事のループの前に位置していませんか?

    フォーラム: 使い方全般
    返信が含まれるトピック: 投稿日とタイトルを表示

    少し前の話に戻りますが、

    query_posts(); の代わりに get_posts(); を使う—-
    これを試してみたのですが、get_posts();を使うと
    対象のページが表示されたのですが、「アーカイブメニュー」が
    表示されている記事のみになってしまいました。

    アーカイブメニューが表示されている記事のみになってしまった、とはどういう状況でしょう?
    私にはちょっと状況が掴めないので、もう少し詳しく説明していただけませんか?
    問題の解決にはつながらないことかもしれませんが、どういう状況なのか私も理解したいです。

    フォーラム: 使い方全般
    返信が含まれるトピック: 投稿日とタイトルを表示

    リンクの遷移先を表示するためのテンプレートに問題がある可能性が高いので、
    まずは個別記事用テンプレートの内容を確認してみてください。

    「アーカイブメニュー」のループの記述そのものに限れば問題はありません。
    問題があるとすればテンプレート中での他のループとの位置関係でしょうか。

    遷移元と遷移先のテンプレートが同一である場合、
    もしくは個別記事用テンプレートにも「アーカイブメニュー」のループが記述されている場合、
    query_posts(); の代わりに get_posts(); を使うことで
    問題が回避できないか試してみてください。

    # ところで makoto-t さんの提示された出力結果が気になります。
    # the_date(); は年月日が同じ場合 2 件目以降では出力されないはずですが。。。
    # あと strong はどこに消えたんでしょう。。。

15件の返信を表示中 - 271 - 285件目 (全297件中)