yukiforweb
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿タイプの子カテゴリアーカイブの表示> 子ターム名をURLに入れることを諦めればいい話ですが…。
リライトルールで、小タームがはいってるurlの場合の処理を追加すれば良いのではと思いますがどうでしょ?
フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿タイプで、独自のテーブルにデータを保存させるような仕組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();
の様に書き込んで、そのページを開いてもらったらどうでしょう。
フォーラム: プラグイン
返信が含まれるトピック: カスタムフィールドテンプレートを使って検索するとサイドバーのループ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のフィルタは適用されてしまいました^^;
フォーラム: プラグイン
返信が含まれるトピック: カスタムフィールドテンプレートを使って検索するとサイドバーのループ戴いたコードを、
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.phpif(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); //以下略
とやることで対処いたしました。
※全くスマートでないので、よりスマートな方法を教えていただきたいです^^;
フォーラム: プラグイン
返信が含まれるトピック: カスタムフィールドテンプレートを使って検索するとサイドバーのループありがとうございます。
やはり上記の部分が問題だったんですね。
remove_filter( 'posts_join', 'custom_field_template_posts_join' );
のように(よくわからずに)、remove_filterを試してみたのですが、
全く効果がなかったので、凹んでいました。。。明日、早速このコードを試させて頂きます!
本当にありがとうございましたフォーラム: プラグイン
返信が含まれるトピック: カスタムフィールドテンプレートを使って検索するとサイドバーのループ> popupさま
wp reset query() はミスタイプでしょうか?
wp_reset_query();のタイプミスです。申し訳ございません。