ui-loop-settings.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <?php
  2. // Default Settings
  3. $defaults = array(
  4. 'data_source' => 'custom_query',
  5. 'post_type' => 'post',
  6. 'order_by' => 'date',
  7. 'order' => 'DESC',
  8. 'offset' => 0,
  9. 'users' => '',
  10. );
  11. $tab_defaults = isset( $tab['defaults'] ) ? $tab['defaults'] : array();
  12. $settings = (object) array_merge( $defaults, $tab_defaults, (array) $settings );
  13. $settings = apply_filters( 'fl_builder_loop_settings', $settings ); //Allow extension of default Values
  14. do_action( 'fl_builder_loop_settings_before_form', $settings ); // e.g Add custom FLBuilder::render_settings_field()
  15. ?>
  16. <div id="fl-builder-settings-section-source" class="fl-loop-data-source-select fl-builder-settings-section">
  17. <table class="fl-form-table">
  18. <?php
  19. // Data Source
  20. FLBuilder::render_settings_field('data_source', array(
  21. 'type' => 'select',
  22. 'label' => __( 'Source', 'fl-builder' ),
  23. 'default' => 'custom_query',
  24. 'options' => array(
  25. 'custom_query' => __( 'Custom Query', 'fl-builder' ),
  26. 'main_query' => __( 'Main Query', 'fl-builder' ),
  27. ),
  28. 'toggle' => array(
  29. 'custom_query' => array(
  30. 'fields' => array( 'posts_per_page' ),
  31. ),
  32. ),
  33. ), $settings);
  34. ?>
  35. </table>
  36. </div>
  37. <div class="fl-custom-query fl-loop-data-source" data-source="custom_query">
  38. <div id="fl-builder-settings-section-general" class="fl-builder-settings-section">
  39. <h3 class="fl-builder-settings-title">
  40. <span class="fl-builder-settings-title-text-wrap"><?php _e( 'Custom Query', 'fl-builder' ); ?></span>
  41. </h3>
  42. <table class="fl-form-table">
  43. <?php
  44. // Post type
  45. FLBuilder::render_settings_field('post_type', array(
  46. 'type' => 'post-type',
  47. 'label' => __( 'Post Type', 'fl-builder' ),
  48. ), $settings);
  49. // Order
  50. FLBuilder::render_settings_field('order', array(
  51. 'type' => 'select',
  52. 'label' => __( 'Order', 'fl-builder' ),
  53. 'options' => array(
  54. 'DESC' => __( 'Descending', 'fl-builder' ),
  55. 'ASC' => __( 'Ascending', 'fl-builder' ),
  56. ),
  57. ), $settings);
  58. // Order by
  59. FLBuilder::render_settings_field('order_by', array(
  60. 'type' => 'select',
  61. 'label' => __( 'Order By', 'fl-builder' ),
  62. 'options' => array(
  63. 'author' => __( 'Author', 'fl-builder' ),
  64. 'comment_count' => __( 'Comment Count', 'fl-builder' ),
  65. 'date' => __( 'Date', 'fl-builder' ),
  66. 'modified' => __( 'Date Last Modified', 'fl-builder' ),
  67. 'ID' => __( 'ID', 'fl-builder' ),
  68. 'menu_order' => __( 'Menu Order', 'fl-builder' ),
  69. 'meta_value' => __( 'Meta Value (Alphabetical)', 'fl-builder' ),
  70. 'meta_value_num' => __( 'Meta Value (Numeric)', 'fl-builder' ),
  71. 'rand' => __( 'Random', 'fl-builder' ),
  72. 'title' => __( 'Title', 'fl-builder' ),
  73. 'post__in' => __( 'Selection Order', 'fl-builder' ),
  74. ),
  75. 'toggle' => array(
  76. 'meta_value' => array(
  77. 'fields' => array( 'order_by_meta_key' ),
  78. ),
  79. 'meta_value_num' => array(
  80. 'fields' => array( 'order_by_meta_key' ),
  81. ),
  82. ),
  83. ), $settings);
  84. // Meta Key
  85. FLBuilder::render_settings_field('order_by_meta_key', array(
  86. 'type' => 'text',
  87. 'label' => __( 'Meta Key', 'fl-builder' ),
  88. ), $settings);
  89. // Offset
  90. FLBuilder::render_settings_field('offset', array(
  91. 'type' => 'text',
  92. 'label' => _x( 'Offset', 'How many posts to skip.', 'fl-builder' ),
  93. 'default' => '0',
  94. 'size' => '4',
  95. 'help' => __( 'Skip this many posts that match the specified criteria.', 'fl-builder' ),
  96. ), $settings);
  97. FLBuilder::render_settings_field('exclude_self', array(
  98. 'type' => 'select',
  99. 'label' => __( 'Exclude Current Post', 'fl-builder' ),
  100. 'default' => 'no',
  101. 'help' => __( 'Exclude the current post from the query.' ),
  102. 'options' => array(
  103. 'yes' => __( 'Yes', 'fl-builder' ),
  104. 'no' => __( 'No', 'fl-builder' ),
  105. ),
  106. ), $settings);
  107. ?>
  108. </table>
  109. </div>
  110. <div id="fl-builder-settings-section-filter" class="fl-builder-settings-section">
  111. <h3 class="fl-builder-settings-title">
  112. <span class="fl-builder-settings-title-text-wrap"><?php _e( 'Filter', 'fl-builder' ); ?></span>
  113. </h3>
  114. <?php foreach ( FLBuilderLoop::post_types() as $slug => $type ) : ?>
  115. <table class="fl-form-table fl-custom-query-filter fl-custom-query-<?php echo $slug; ?>-filter" <?php if ( $slug == $settings->post_type ) { echo 'style="display:table;"';} ?>>
  116. <?php
  117. // Posts
  118. FLBuilder::render_settings_field( 'posts_' . $slug, array(
  119. 'type' => 'suggest',
  120. 'action' => 'fl_as_posts',
  121. 'data' => $slug,
  122. 'label' => $type->label,
  123. 'help' => sprintf( __( 'Enter a list of %1$s.', 'fl-builder' ), $type->label ),
  124. 'matching' => true,
  125. ), $settings );
  126. // Taxonomies
  127. $taxonomies = FLBuilderLoop::taxonomies( $slug );
  128. foreach ( $taxonomies as $tax_slug => $tax ) {
  129. FLBuilder::render_settings_field( 'tax_' . $slug . '_' . $tax_slug, array(
  130. 'type' => 'suggest',
  131. 'action' => 'fl_as_terms',
  132. 'data' => $tax_slug,
  133. 'label' => $tax->label,
  134. 'help' => sprintf( __( 'Enter a list of %1$s.', 'fl-builder' ), $tax->label ),
  135. 'matching' => true,
  136. ), $settings );
  137. }
  138. ?>
  139. </table>
  140. <?php endforeach; ?>
  141. <table class="fl-form-table">
  142. <?php
  143. // Author
  144. FLBuilder::render_settings_field('users', array(
  145. 'type' => 'suggest',
  146. 'action' => 'fl_as_users',
  147. 'label' => __( 'Authors', 'fl-builder' ),
  148. 'help' => __( 'Enter a list of authors usernames.', 'fl-builder' ),
  149. 'matching' => true,
  150. ), $settings);
  151. ?>
  152. </table>
  153. </div>
  154. </div>
  155. <?php
  156. do_action( 'fl_builder_loop_settings_after_form', $settings ); // e.g Add custom FLBuilder::render_settings_field()