フォーラムへの返信

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • > 子ターム名をURLに入れることを諦めればいい話ですが…。

    リライトルールで、小タームがはいってるurlの場合の処理を追加すれば良いのではと思いますがどうでしょ?

    トピック投稿者 yukiforweb

    (@yukiforweb)

    Fumito MIZUNO様
    ご回答有り難うございます。

    投稿画面に独自フォームを表示させるってどうしたらいいのだろうと考えていたのですが、
    そこは、カスタムフィールドを使う時と同様に、add_meta_box();を使えばよかったのを思い出しました!

    合わせまして、こんな感じでやってみたいと思います。

    add_action('admin_menu', 'add_extra_form');
    add_action('save_post', 'save_extra_data');
    
    function add_extra_form(){
        add_meta_box('meta_data', '追加フォーム', 'extra_form', 'custom_post_type_name', 'normal', 'high');
    }
    
    function extra_form(){
        global $post;
    
        echo '<h2>追加フォーム</h2>';
        echo '<input type="text" name="extra_data" value="' . get_extra_value($post->ID,'extra_data') . '" />';
    
    }
    
    function save_extra_data($post_id){
        $extra_data = $_POST['extra_data'];
        $column = 'extra_data';
        /*
        既に保存されているデータと比較 or $extra_dataが空の場合、で場合分けして、
        独自テーブルに対して、追加・アップデート・削除を行う処理
        */
    }
    
    function get_extra_value($post_id, $column){
        global $wpdb;
        /*
        独自テーブルから該当データを取ってくる処理
        */
    }
    フォーラム: 使い方全般
    返信が含まれるトピック: 稼働中の小規模WPのリニューアルについt

    私がよく行うのは、

    (1)テストサーバーを用意して、そこに本サイトのデータベースの中身と、ファイルを全部コピーする。
    (2)テストサーバー内のデータベース内にあるドメイン文字列を変更するため、
    http://websae.net/search-replace-db-master-20160112/
    にあるツールを使用して一括変換。
    (3)もし、テンプレート内にもドメインの直書き部分がある場合は、自分で変換。(秀丸エディタで一括変換させてます)

    ですね。

    とりあえずこれでテストサーバー上で作業を行い、テーマが完成した段階で、テーマフォルダを本サイトにアップロードして切り替えを行っています。

    「子タームの一覧を表示させようとする」URLってどんなURLを考えていらっしゃるのでしょうか?

    URLは特に指定しないのならば、
    固定ページのテンプレートに、

    $args = array(
        /*小タームに属する記事を選択する条件を記述*/
    );
    $data = new WP_Query($args);
    if($data->have_posts()):while($data->have_posts()):$data->the_post();
    /*略*/
    endwhile;endif;wp_reset_postdata();

    の様に書き込んで、そのページを開いてもらったらどうでしょう。

    トピック投稿者 yukiforweb

    (@yukiforweb)

    search.phpより前のサブループ

    $args = array(
    	'post_type' => 'test',//カスタム投稿タイプ
    	'posts_per_page' => '1',//表示件数
    	'suppress_filters' => true, // suppress_filtersを使用
    	);
    // removeCftSearchFilters();  remove_all_filters()を適用するのやめる
    $custom_post_loop = new WP_Query($args);
    //以下略

    で試してみましたが、cftのフィルタは適用されてしまいました^^;

    トピック投稿者 yukiforweb

    (@yukiforweb)

    戴いたコードを、endwhile;の後でなく、endif;の後に追加しました。
    (一件も該当データがなかったときに、remove_all_filtersがスルーされないように)

    search.php

    if(have_posts()):while(have_posts()):the_post();
    the_title();
    endwhile;  //endwhile;の後ろではなく
    endif;     //endif;の後ろに入れました。
    //以下、いただいたコード
    if ( isset($_REQUEST['cftsearch_submit']) ) :
    	if ( !empty($_REQUEST['limit']) )
    	echo remove_all_filters( 'post_limits' );
    	echo remove_all_filters( 'posts_join' ) ;
    	echo remove_all_filters( 'posts_where' ) ;
    	echo remove_all_filters( 'posts_orderby' ) ;
    endif;
    //以上、いただいたコード
    wp_reset_query();

    とりあえず、これで、search.phpのメインループ「以降」のサブループに、余計なフィルターがかかることがなくなりましたが、search.phpのメインループ「以前」に読み込まれているサブループには、相変わらず余計なフィルターがかかっていました。

    ので、

    functions.php

    function removeCftSearchFilters(){
    //戴いたコードのコピペ
    	if ( isset($_REQUEST['cftsearch_submit']) ) :
    				if ( !empty($_REQUEST['limit']) )
    					remove_all_filters( 'post_limits' );
    				remove_all_filters( 'posts_join' ) ;
    				remove_all_filters( 'posts_where' ) ;
    				remove_all_filters( 'posts_orderby' ) ;
    	endif;
    }

    を作成し、
    search.php

    if(have_posts()):while(have_posts()):the_post();
    the_title();
    endwhile;  //endwhile;の後ろではなく
    endif;     //endif;の後ろに入れました。
    removeCftSearchFilters();  //<=関数の挿入
    wp_reset_query();

    search.phpより前のサブループ

    $args = array(
    	'post_type' => 'test',//カスタム投稿タイプ
    	'posts_per_page' => '1',//表示件数
    	);
    removeCftSearchFilters();  //<=関数の挿入
    $custom_post_loop = new WP_Query($args);
    //以下略

    とやることで対処いたしました。

    ※全くスマートでないので、よりスマートな方法を教えていただきたいです^^;

    トピック投稿者 yukiforweb

    (@yukiforweb)

    ありがとうございます。

    やはり上記の部分が問題だったんですね。

    remove_filter( 'posts_join', 'custom_field_template_posts_join' );

    のように(よくわからずに)、remove_filterを試してみたのですが、
    全く効果がなかったので、凹んでいました。。。

    明日、早速このコードを試させて頂きます!
    本当にありがとうございました

    トピック投稿者 yukiforweb

    (@yukiforweb)

    > popupさま

    wp reset query() はミスタイプでしょうか?

    wp_reset_query();のタイプミスです。申し訳ございません。

8件の返信を表示中 - 1 - 8件目 (全8件中)