フォーラムへの返信

15件の返信を表示中 - 16 - 30件目 (全109件中)
  • 以前WordPressのソースを覗いた時の記憶によると、アップロードしたファイルのカスタムフィールドにファイルのURLが記録されており、 wp_get_attachment_url() のような関数ではそのデータを参照しているようです。
    ファイルのURLがキー _wp_attached_file にあり、さらにメタデータのキー _wp_attachment_metadata の中にも縮小画像の各サイズのURL( image_downsize() 等で使われます)が格納されています。
    これらについても確認されましたか?

    フォーラム: 使い方全般
    返信が含まれるトピック: カテゴリ一覧の作り方を知りたい。

    「ゲーム」カテゴリのページに、その子カテゴリである各タイトルの一覧を表示したい、ということでしょうか。

    category.php では get_queried_object_id() で現在のページのカテゴリIDを取得できます。
    これを wp_list_categories() に使うことで、子カテゴリの一覧を表示できます。
    例えばこんな感じです。

    $this_cat = get_queried_object_id();
    wp_list_categories(array(
        'parent' => $this_cat, // このカテゴリIDの子を表示
        'title_li' => '',
    ));

    wp_list_categories() にはいろいろ設定があるので、お好みに合わせて追加してください。

    特に設定を行わなければ、ブログ内検索では固定ページも検索対象だったと思いますが。
    俺なんかはわざわざ pre_get_posts アクションを使って

    $wp_query->set('post_type', 'post');

    で検索対象を「投稿」に限定しているくらいですから。

    LABE

    (@latobeam)

    「新着情報一覧+ブログ」の一覧ページには、どのようなページを使用するご予定ですか?

    表示する件数とカテゴリーIDを指定している(中略)の部分を削除すると「新着情報一覧ページ」のみの状態でページネーションもうまく動作します。

    とのことなので、何かのアーカイブページかと思われますが。

    LABE

    (@latobeam)

    親カテゴリのみに限定したうえで、そのうちの一つだけを表示する、ということでよろしいですか?
    その場合、上でお示ししたコードの下から3行目、

        return $cats;

        return array( reset( $cats ) );

    に変えていただくといいかと思います。

    フォーラム: 使い方全般
    返信が含まれるトピック: メニュー中のドロップダウンの不都合。
    LABE

    (@latobeam)

    先にお示ししたコードの前半(1〜7行目)は

    @media screen and (min-width: 59.6875em) {
    ....
    }

    の中ではなく外側なのだと明示したつもりでしたが、今見てみるとちゃっかり内側に入っていますね。
    「※どこに追加するべきかわからなければ、最後に追加してください。」とはそのまま追加という意味だったのですが。

    あれからスタイルがいろいろ変わっているようですので、もう一度検証してみました。
    height の値はフォントサイズに依存するので、メディアクエリのブレイクポイントが多いとそれだけ追従しなければならないのです。
    よって、現在の状態では以下のようになろうかと思います。

    .dropdown-toggle {
        top: 0;
        z-index: 2;
        width: 100%;
        height: 48px;
        text-align: right;
    }
    
    @media screen and (min-width: 46.25em) {
        .dropdown-toggle {
            height: 49px;
        }
    }
    
    @media screen and (min-width: 55em) {
        .dropdown-toggle {
            height: 48px;
        }
    }
    
    @media screen and (min-width: 59.6875em) {
        .dropdown-toggle {
            height: 30px;
        }
    }
    
    @media screen and (min-width: 68.75em) {
        .dropdown-toggle {
            height: 34px;
        }
    }
    
    @media screen and (min-width: 77.5em) {
        .dropdown-toggle {
            height: 40px;
        }
    }

    最初の部分(1〜7行目)も含めて、すべての @media の外側にそのまま記述してください。
    CSSファイルの末尾で結構です。
    そして、この部分のフォントサイズやパディングなどが変更されたら、それに合わせて再度調整しなければなりません。

    この方法はかなり“小手先”の手法ですので、本当はもっと効率的な方法を使いたいところですが、変更が大掛かりすぎてちょっとここには書けません。
    思いついた方法だけ、一応書いておきます。

    • <a> 要素のクリックイベントに、トグルボタンのイベントをバインドする
    • <a> 要素の高さを動的に取得して、トグルボタンに反映させる
    • トグルボタンのマークアップを変えてスタイルを指定しやすくする
    • そもそもメニューの使い方がテーマの仕様に合っていない
    LABE

    (@latobeam)

    すみません、 in_array() のカテゴリオブジェクトに対する挙動が思っていたのと違ったようです。
    今度はちょっとこちらでテストして大丈夫だったので、いかがでしょうか。

    function my_category_list( $categories, $post_id ) {
        $cats = $categories;
        // IDだけにする
        $cats_ID = array_map( function ( $cat ) {
            return $cat->term_id;
        }, $cats );
        // カテゴリを一つずつ処理
        foreach ( $categories as $key => $category ) {
            $ancestor = $category;
            // カテゴリの祖先を一つずつ辿る
            while ( ! empty( $ancestor->parent ) && $ancestor = get_category( $ancestor->parent ) ) {
                // 祖先カテゴリが記事に含まれれば
                if ( in_array( $ancestor->term_id, $cats_ID, true ) ) {
                    // 元のカテゴリを除外
                    unset( $cats[ $key ] );
                    break;
                }
            }
        }
        return $cats;
    }
    add_filter( 'the_category_list', 'my_category_list', 10, 2 );
    LABE

    (@latobeam)

    the_category() で表示されるカテゴリは the_category_list フィルターで変更することができます。
    今回の場合、ある子カテゴリとともに親カテゴリにも属しているならその子カテゴリを除外する、というふうにすれば実現できます。
    そこで、親カテゴリと言わず、祖先カテゴリ(親の親……etc.)すべてにわたって判別できるコードを書いてみました。
    これは functions.php に追記してください。

    function my_category_list( $categories, $post_id ) {
        $cats = $categories;
        // カテゴリを一つずつ処理
        foreach ( $categories as $key => $category ) {
            $ancestor = $category;
            // カテゴリの祖先を一つずつ辿る
            while ( ! empty( $ancestor->parent ) && $ancestor = get_category( $ancestor->parent ) ) {
                // 祖先カテゴリが記事に含まれれば
                if ( in_array( $ancestor, $categories, true ) ) {
                    // 元のカテゴリを除外
                    unset( $cats[ $key ] );
                    break;
                }
            }
        }
        return $cats;
    }
    add_filter( 'the_category_list', 'my_category_list', 10, 2 );

    なおテストはしていないのでご参考までに。

    LABE

    (@latobeam)

    comment_form_submit_field というフィルターもありますね。
    こちらはコメントフォームの送信ボタンに対するフィルターですが、ここで入力項目を追加することもできると思います。

    function my_submit_field( $submit_field, $args ) {
        $my_fields = 'ここに追加';
        return $my_fields . $submit_field;
    }
    add_filter( 'comment_form_submit_field', 'my_submit_field', 10, 2 );

    こちらだと、ログインの有無にかかわらず適用され、表示位置としても妥当かと思います。

    • この返信は9年前にLABEが編集しました。
    LABE

    (@latobeam)

    ログインしているユーザーに対してのみ、実行されるアクション comment_form_logged_in_after があり、 comment_form() の引数の logged_in_as のメッセージ表示直後に実行されます。

    function my_logged_in_after( $commenter, $user_identity ) {
    }
    add_action( 'comment_form_logged_in_after', 'my_logged_in_after', 10, 2 );

    ログインしているユーザーとしていないユーザーの両方に対して実行されるアクションは、それより少し前に実行される comment_form_top になります。

    function my_comment_form_top() {
    }
    add_action( 'comment_form_top', 'my_comment_form_top' );

    このいずれかのアクションにて入力項目をechoすればいいかと思いますが、アクションの実行タイミングとしては若干思い通りにならないかもしれません。

    • この返信は9年前にLABEが編集しました。
    LABE

    (@latobeam)

    「ログインしていないときのみカスタマイズが利いており
    「ログインしている場合にはフィルターとしてきのうしていない
    とありますが、カスタマイズにはフィルターを使っているんですよね?
    それだと、ログインしていないときにフィルターは動作しているのですから、
    「これらのフィルターはログインしていなければ動作しないものなのでしょうか?」
    の意味がよくわからないのですが、書き間違いでしょうか。

    ちなみに、ログインしている場合はコメントフォームの「名前」「メールアドレス」「URL」の入力欄が表示されないので、 comment_form_fields フィルターの大部分と comment_form_default_fields フィルターのおそらく全部は、実質的には無意味になるでしょう。

    LABE

    (@latobeam)

    CSSのセレクターには詳細度(優先度)があります。
    すでに適用されているスタイルと競合する指定を追加した場合は、詳細度の高いほうだけが適用されます。
    すでに適用されているスタイルがどのように(セレクター、設置場所など)指定されているかを調べてみてください。

    LABE

    (@latobeam)

    手元の環境で試してみましたが、プラグインなど環境は違うと思いますが、その状況は再現しませんでした。

    どうでもいい話ですが、その3都府県のチョイスがどことなく恣意的な感じがするのは気のせいでしょうかね……
    ないとは思いますが、NGワード的な何かとか……

    もしくは、「県」「都」「府」を抜いて「福島」「東京」「京都」としてみるとどうなるでしょうか。

    LABE

    (@latobeam)

    うまくいかず、とは具体的にはどのような状態でしょうか。
    get_template_part() でテンプレートファイルを呼び出していますが、そちらのほうに問題があるならそちらもご提示いただかないと助言できないかもしれません。

    そして query_posts() は非推奨の関数で、使うべきではありません。
    コードを見る限りでは、代わりに pre_get_posts アクションで実現できると思います。

    LABE

    (@latobeam)

    @mura0403 さん
    それは特定の投稿をアーカイブから除外するコードですが、 @natsu85 さんの意図する動作ではないのではないでしょうか。

    @natsu85 さん
    上で「あっています」と言いましたが、よく読んでみれば「あっていない」ような気がします。
    アーカイブページのメインループでは、取得した(複数の)投稿を一つずつ順に処理します。
    get_the_ID() は、現在処理中の1件の投稿のIDを返します。
    if ( xxx == get_the_ID() ) は、「xxx(記事AのID)と get_the_ID() を比較し等しいならば」という意味になります。
    結果的に、ループ処理において記事Aに差し掛かった時にのみifブロックの処理が実行され、そうでない場合はelseブロックの処理が実行されます。

15件の返信を表示中 - 16 - 30件目 (全109件中)