フォーラムへの返信

15件の返信を表示中 - 301 - 315件目 (全327件中)
  • パラメーターでは解決出来ないので、フィルターフックを使ってSQLを改変する必要があります。
    meta_queryを使ってキーを指定すると、2つ目のカスタムフィールドを抽出したモノにmt1というエイリアスがつけられるのでそれを使ってSQLを書き換えます。

    function my_posts_orderby( $orderby ){
        global $wpdb;
        return str_replace( $wpdb->prefix.'postmeta.meta_value', $wpdb->prefix.'postmeta.meta_value, mt1.meta_value', $orderby );
    }
    
    add_filter( 'posts_orderby', 'my_posts_orderby' , 10 );
    
    $array = array(
        'post_type' => 'projects',
        'posts_per_page' => '10',
        'orderby' => 'meta_value_num',
        'meta_query' => array(
            'relation' => 'AND',
            array(
                'key' => 'meta_key_01',
                'compare' => 'EXISTS'
            ),
            array(
                'key' => 'meta_key_02',
                'compare' => 'EXISTS'
            )
        ),
        'paged' => get_query_var( 'paged' )
        );
    query_posts( $array );
    
    remove_filter( 'posts_orderby', 'my_posts_orderby' , 10 );

    また、query_postsを使って変更すると、記事が読み込まれた後にテンプレート上でもう一度記事を読み込むことになるので、コストがかかりますし、いろんな不具合の温床となりますので、
    pre_get_postsを使って以下のようにした方が良いかと思います。

    <?php
    add_action( 'pre_get_posts', 'my_pre_get_posts' );
    
    function my_pre_get_posts( $query ) {
            //管理画面の時や、メインのループで無いときは無視。
        if ( !$query->is_main_query() or is_admin() ) {
            return;
        }
    
        //projectのアーカイブの時のみ。
        if( $query->is_post_type_archive( 'projects' ) ) {
            $query->set('orderby', 'meta_value_num');
            $meta_query = array(
                'relation' => 'AND',
                array(
                    'key' => 'meta_key_01',
                    'compare' => 'EXISTS'
                    ),
                array(
                    'key' => 'meta_key_02',
                    'compare' => 'EXISTS'
                    )
                );
            $query->set('meta_query', $meta_query);
    
            add_filter( 'posts_orderby', 'my_posts_orderby' , 10 );
    
        }
    }
    
    function my_posts_orderby( $orderby ){
        global $wpdb;
        return str_replace( $wpdb->prefix.'postmeta.meta_value', $wpdb->prefix.'postmeta.meta_value, mt1.meta_value', $orderby );
    }

    http://example.com/page/page/2/

    というURLは内部的には、

    http://example.com/page/?paged=2

    というURLとして解釈されると言うことです。
    なので、

    http://example.com/page/?page=2

    としてアクセスしても2ページ目にはたどり着けないということです。

    フォーラム: 使い方全般
    返信が含まれるトピック: カテゴリページでの記事のソート

    URLの後ろに、

    http://example.com/category/hoge/?order=DESC&orderby=post_title

    みたいな形でパラメーターを渡すと並べ替えが出来ます。

    渡せるパラメーターは、関数リファレンス/WP Query – WordPress Codex 日本語版 の順序&順序ベースパラメータの項目を参考にしてみて下さい。

    この記述を行っているテンプレートは、何でしょうか?
    WordPressの読み込まれるテンプレートは、

    1. URLのパース
    2. データベースから投稿の読み出し
    3. それら結果に応じてテンプレートを読み込み

    という流れになっています。
    archive.phpや、index.php等で読み込むモノを変更している場合は、WP_Query等で記事読み込む前にテンプレートの決定が行われるので、たとえば、

    http://example.com/one/

    というページでこれを処理しているとき、カスタム投稿タイプoneの記事数が3件だとすると、
    ページに表示する最大投稿数を1にしても4ページ以降は存在しないので、先に404.phpが読み込まれてしまうという寸法です。

    これを避けるためには、固定ページで実装するのが良いかと思います。

    また、
    http://example.com/page/page/2/
    のパラメーターは、
    http://example.com/page/?paged=2

    となります。

    フォーラム: 使い方全般
    返信が含まれるトピック: indexで宣言した変数・配列はfooter.phpで使えない?

    header.php や footer.phpはそれぞれ、get_header()、get_footer()等の関数の内部でincludeされます。
    なので、footer.phpで定義した変数は、footer.phpでのみ使用可能なローカル変数となります。

    index.php等のパーツではないテンプレートやfunctions.phpでの変数はグローバル変数となります。
    index.phpで

    $hoge = 'hoge';

    という変数を定義した場合は、footer.phpでは

    global $hoge;
    echo $hoge // hogeが表示

    のように変数をグローバル宣言するとアクセスできます。
    PHP: 変数のスコープ – Manual
    等も参考にしてみて下さい。

    ゴミ箱などに同名の投稿があったり、別の投稿タイプでcontactという名前のスラッグのページが存在すると、名前が変更されてしまいます。

    全部の投稿に対してユニークな値になりますので、他の投稿タイプのデータも確認した方が良いかと思います。

    プラグイン作者です。
    今更ですが、この問題についてですが、タクソノミーのリンク周りはあんまり複雑なコトが出来ません。get_term_link等で、

    • リンクを生成する場合、複数のpost_typeに紐付いている場合に、どちらのモノか特定が出来ない
    • post_typeパラメーターを追加すると、タクソノミーテンプレートより、カスタム投稿タイプのテンプレートが先に読まれる

    等の問題が発生するので、URLの見た目だけ変更するという実装になっています。
    一応、1.0.0で、post_typeパラメーターを追加するかどうかの設定を足しました。

    こちらで対処することが出来るかと思いますが、テンプレートの読み込みなど、かなり挙動が変更されてしまう部分がありますので、ご注意下さい。

    フォーラム: 使い方全般
    返信が含まれるトピック: get_postsで0件の時 「Undefined offset: 0 」 が出る

    postを表示する処理というのは、どのようになっているのでしょうか?
    おそらく、不正なrewind_postsや、have_posts(内部的にrewind_postsを呼んでいる)の呼び出しがあったものと思われます。

    フォーラム: 使い方全般
    返信が含まれるトピック: sqlで欲しい情報だけを取り出したい

    WP_User_Queryを使ってみてはどうでしょう?

    http://codex.wordpress.org/Class_Reference/WP_User_Query#Custom_Field_Parameters

    著者アーカイブにて、表示される投稿をカスタマイズするには、pre_get_postsを使います。

    add_action("pre_get_posts","author_pre_get_posts");
    function author_pre_get_posts($query){
        if( $query->is_main_query() && !is_admin() && $query->is_author() ) {
            $query->set ("post_type", array( 'posttype1','posttype2','posttype3' ) );
            $query->set( "posts_per_page", 3);
        }
    }

    ページがそもそも存在するかどうかの判定は、テンプレートが読み込まれる前に行われるので、テンプレート上でページ送りを実装すると、次のページは存在するはずなのに、404が表示されるなどの問題が発生してしまいます。

    フォーラム: 使い方全般
    返信が含まれるトピック: カスタム投稿タイプのリライトルールについて

    register_taxonomyの引数の

    ‘rewrite’ => array(‘slug’ => ‘event/cat’)

    を、

    ‘rewrite’ => array(‘slug’ => ‘event’)

    とすれば、一応表示は可能です。

    ただし、

    http://www.example.com/event/カスタム分類のターム名

    という設定そのものが、既存の、

    http://www.example.com/event/投稿のスラッグ

    の設定と競合を起こし、404になったり、「投稿が見つかりません」と表示される事があります。

    ですので、URLを、「http://www.example.com/event/cat/カスタム分類のターム名」として設定するか、カスタム投稿側のパーマリンク設定を、post_idを使うようにして、

    add_rewrite_rule(‘event/cat/([^/]+)/?$’, ‘index.php?events_cat=$matches[1]’, ‘top’);

    の設定を、数字のみのものにはマッチしないように変える必要があります。

    フォーラム: プラグイン
    返信が含まれるトピック: CKEditorについて

    TinyMCEで良ければ、
    http://firegoby.jp/wp/tinymce_templates

    こんなプラグインがあります。

    フォーラム: プラグイン
    返信が含まれるトピック: 【Contact Form 7】thanksページでIE11のみ落ちます。

    IE11だと未検証なのですが、IE10以下で、cssに Helvetica , Helvetica None 等が、設定されていると、JSを動作させたタイミングで、ブラウザが落ちる不具合があります。

    contact form 7にその手のCSSが存在していないので、テーマのCSS等を確認してみて下さい。

    Custom Post Type Permalinksの開発者です。

    カスタム投稿タイプの日付アーカイブなどは、そもそもWordPressに標準装備されていない機能です。(一応パラメーターを投げてやれば投稿の取得は可能です)

    ですので、パンくずを自分で実装する必要があるかと思います。

    もしくは、

    bread_crumb(“echo=false”);

    等として出力させず、preg_match等で書き換える等でしょうか。。。

    フォーラム: 使い方全般
    返信が含まれるトピック: meta_queryのvalue値に渡す引数について

    カスタムフィールドの全文検索は相当時間がかかるので、
    カスタムタクソノミー(カスタム分類)を使用すると、データベースにインデックスが設定されているため、そこそこ高速に動作するようになると思います。

    エリアやジャンルなどは、タクソノミーにしやすいものだと思います。

15件の返信を表示中 - 301 - 315件目 (全327件中)