Merhaba, Wordpress'te bir widget için tag ile filtreleme (select) olayını yerleştirmek istedim ancak başarısız oldum. Ücretli ücretis yardımcı olabilecek olursa memnun olurum. ücret isteyenler fiyatı pm ile gönderebilirler. Ağağıdaki kodda istediğim benzer şey için kategori kodu da bulunuyor.
<?php
/**
* CWP - Top Producs Widget
*/
class cwp_top_products_widget extends WP_Widget {
const RESTRICT_TITLE_CHARS = 100;
function __construct() {
parent::__construct(
'cwp_top_products_widget',
__( 'CWP Top Products Widget', 'cwppos' ),
// Widget description
array( 'description' => __( 'This widget displays the top products based on their rating.', 'cwppos' ) )
);
}
public function assets() {
wp_enqueue_style( 'cwp-pac-widget-stylesheet', WPPR_URL . '/css/cwppos-widget.css' );
wp_enqueue_script( 'cwp-pac-main-script', WPPR_URL . '/javascript/main.js',array( 'jquery', 'pie-chart' ),WPPR_LITE_VERSION,true );
wp_enqueue_script( 'pie-chart', WPPR_URL . '/javascript/pie-chart.js',array( 'jquery' ), WPPR_LITE_VERSION,true );
// Added by Ash/Upwork
wp_enqueue_style( 'cwp-widget-stylesheet1', WPPR_URL . '/css/cwppos-widget-style1.css' );
wp_enqueue_style( 'cwp-widget-rating', WPPR_URL . '/css/cwppos-widget-rating.css' );
// Added by Ash/Upwork
}
// Added by Ash/Upwork
public function adminAssets() {
if ( is_admin() ) {
wp_enqueue_style( 'cwp-widget-admin-css', WPPR_URL . '/css/cwppos-widget-admin.css' );
wp_register_script( 'cwp-widget-script-top', WPPR_URL . '/javascript/widget-top.js' );
wp_localize_script('cwp-widget-script-top', 'cwpw_top', array(
'widgetName' => $this->id_base,
'imageCheckbox' => $this->get_field_id( 'show_image' ),
'ratingSelect' => $this->get_field_id( 'cwp_tp_rating_type' ),
));
wp_enqueue_script( 'cwp-widget-script-top' );
}
}
// Added by Ash/Upwork
public function custom_order_by( $orderby ) {
return 'mt1.meta_value DESC, mt2.meta_value+0 DESC';
}
public function widget( $args, $instance ) {
$this->assets();
if ( isset( $instance['title'] ) ) {
$title = apply_filters( 'widget_title', $instance['title'] ); }
if ( isset( $instance['no_items'] ) ) {
$no_items = apply_filters( 'widget_content', $instance['no_items'] ); }
if ( isset( $instance['cwp_tp_category'] ) ) {
$cwp_tp_category = apply_filters( 'widget_content', $instance['cwp_tp_category'] ); }
if ( isset( $instance['title_type'] ) ) {
$post_type = apply_filters( 'widget_content', $instance['title_type'] ); }
if ( isset( $instance['show_image'] ) ) {
$show_image = apply_filters( 'widget_content', $instance['show_image'] ); }
// before and after widget arguments are defined by themes
// echo "<div id='cwp_top_products_widget'>";
echo $args['before_widget'];
if ( ! empty( $title ) ) {
echo $args['before_title'] . $title . $args['after_title']; }
if ( $cwp_tp_category == 'All' ) { $cwp_tp_category = ''; }
// Loop to get the most popular posts, ordered by the author's final grade.
$query_args = array(
'posts_per_page' => $no_items, // limit it to the specified no of posts
'post_type' => 'any',
'post__not_in' => get_option( 'sticky_posts' ),
'category_name' => $cwp_tp_category,
'meta_key' => 'cwp_meta_box_check',
'meta_query' => array(
array(
'key' => 'cwp_meta_box_check',
'value' => 'Yes',
),
array(
'key' => 'option_overall_score',
),
),
);
add_filter( 'posts_orderby',array( $this, 'custom_order_by' ) );
$cwp_products_loop = new WP_Query( $query_args );
remove_filter( 'posts_orderby',array( $this, 'custom_order_by' ) );
// echo $cwp_top_products_loop->request;
// Added by Ash/Upwork
if ( ! isset( $instance['cwp_tp_buynow'] ) ) {
$instance['cwp_tp_buynow'] = __( 'Buy Now', 'cwppos' );
}
if ( ! isset( $instance['cwp_tp_readreview'] ) ) {
$instance['cwp_tp_readreview'] = __( 'Read Review', 'cwppos' );
}
if ( ! isset( $instance['cwp_tp_layout'] ) ) {
$instance['cwp_tp_layout'] = 'default.php';
}
if ( ! isset( $instance['cwp_tp_rating_type'] ) ) {
$instance['cwp_tp_rating_type'] = 'round';
}
include trailingslashit( dirname( __FILE__ ) ) . '/widget-layouts/' . $instance['cwp_tp_layout'];
// Added by Ash/Upwork
echo $args['after_widget'];
// echo "</div>"; // end #cwp_top_products_widget
}
// Widget Backend
public function form( $instance ) {
// Added by Ash/Upwork
$this->adminAssets();
// Added by Ash/Upwork
if ( isset( $instance['title'] ) ) {
$title = $instance['title'];
} else {
$title = __( 'Top Products', 'cwppos' );
}
if ( isset( $instance['no_items'] ) ) {
$no_items = $instance['no_items'];
} else {
$no_items = __( '10', 'cwppos' );
}
if ( isset( $instance['cwp_tp_category'] ) ) {
$cwp_tp_category = $instance['cwp_tp_category'];} else {
$cwp_tp_category = 'Select Category';
}
if ( isset( $instance['title_type'] ) ) {
$title_type = $instance['title_type'];
} else {
$title_type = false;
}
if ( isset( $instance['show_image'] ) ) {
$show_image = $instance['show_image'];
} else {
$show_image = false;
}
// Added by Ash/Upwork
$cwp_tp_buynow = __( 'Buy Now', 'cwppos' );
if ( isset( $instance['cwp_tp_buynow'] ) ) {
$cwp_tp_buynow = $instance['cwp_tp_buynow'];
}
$cwp_tp_readreview = __( 'Read Review', 'cwppos' );
if ( isset( $instance['cwp_tp_readreview'] ) ) {
$cwp_tp_readreview = $instance['cwp_tp_readreview'];
}
$cwp_tp_layout = 'default.php';
if ( isset( $instance['cwp_tp_layout'] ) ) {
$cwp_tp_layout = $instance['cwp_tp_layout'];
}
if ( $cwp_tp_layout == 'default.php' ) {
$cwp_tp_rating_type = 'round';
} else {
$cwp_tp_rating_type = 'star';
}
// Added by Ash/Upwork
$cwp_tp_categ_array = get_categories( 'hide_empty=0' );
foreach ( $cwp_tp_categ_array as $categs ) {
$cwp_tp_all_categories[ $categs->slug ] = $categs->name;
}
// Widget admin form
?>
<p>
<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', 'cwppos' ); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id( 'no_items' ); ?>"><?php _e( 'Number of posts to show:', 'cwppos' ); ?></label>
<input id="<?php echo $this->get_field_id( 'no_items' ); ?>" name="<?php echo $this->get_field_name( 'no_items' ); ?>" size="3" type="text" value="<?php echo esc_attr( $no_items ); ?>" />
</p>
<p>
<?php $cwp_tp_selected_categ = esc_attr( $cwp_tp_category ); ?>
<label for="<?php echo $this->get_field_id( 'cwp_tp_category' ); ?>"><?php _e( 'Category:', 'cwppos' ); ?></label>
<select id="<?php echo $this->get_field_id( 'cwp_tp_category' ); ?>" name="<?php echo $this->get_field_name( 'cwp_tp_category' ); ?>">
<?php echo '<option>All</option>'; ?>
<?php foreach ( $cwp_tp_all_categories as $categ_slug => $categ_name ) : ?>
<?php if ( $categ_slug == $cwp_tp_selected_categ ) {
echo '<option selected>' . $categ_slug . '</option>';
} elseif ( $categ_slug == '' ) {
echo '<option>There are no categs</select>';
} else {
echo '<option>' . $categ_slug . '</option>';
} ?>
<?php endforeach; ?>
</select>
</p>
<?php // Added by Ash/Upwork ?>
<p>
<?php $cwp_tp_layout = esc_attr( $cwp_tp_layout ); ?>
<label for="<?php echo $this->get_field_id( 'cwp_tp_layout' ); ?>"><?php _e( 'Layout:', 'cwppos' ); ?></label>
<?php
$layouts = array();
$customLayoutFiles = glob( trailingslashit( dirname( __FILE__ ) ) . 'widget-layouts/*.php' );
foreach ( $customLayoutFiles as $file ) {
$layouts[ basename( $file ) ] = ucwords( basename( $file, '.php' ) );
}
foreach ( $layouts as $key => $val ) :
$extra = '';
if ( $key == $cwp_tp_layout ) { $extra = 'checked'; }
$styleName = strtolower( str_replace( ' ', '', $val ) );
$id = $this->get_field_id( $styleName );
?>
<br>
<input type="radio" name="<?php echo $this->get_field_name( 'cwp_tp_layout' ); ?>" value="<?php echo $key;?>" id="<?php echo $id . 'style'?>" <?php echo $extra;?> class="wppr-stylestyle"><label for="<?php echo $id . 'style';?>" class="wppr-stylestyle"><?php echo $val;?></label>
<span class="wppr-styleimg" id="<?php echo $id . 'style'?>img">
<img src="<?php echo WPPR_URL . '/assets/' . $styleName . '.png';?>">
</span>
<?php
endforeach;
?>
</p>
<p class="wppr-customField" style="display: none">
<?php $cwp_tp_buynow = esc_attr( $cwp_tp_buynow ); ?>
<label for="<?php echo $this->get_field_id( 'cwp_tp_buynow' ); ?>"><?php _e( 'Buy Now text:', 'cwppos' ); ?></label>
<input id="<?php echo $this->get_field_id( 'cwp_tp_buynow' ); ?>" name="<?php echo $this->get_field_name( 'cwp_tp_buynow' ); ?>" class="widefat" type="text" value="<?php echo $cwp_tp_buynow; ?>" />
</p>
<p class="wppr-customField" style="display: none">
<?php $cwp_tp_readreview = esc_attr( $cwp_tp_readreview ); ?>
<label for="<?php echo $this->get_field_id( 'cwp_tp_readreview' ); ?>"><?php _e( 'Read Review text:', 'cwppos' ); ?></label>
<input id="<?php echo $this->get_field_id( 'cwp_tp_readreview' ); ?>" name="<?php echo $this->get_field_name( 'cwp_tp_readreview' ); ?>" class="widefat" type="text" value="<?php echo $cwp_tp_readreview; ?>" />
</p>
<?php // Added by Ash/Upwork ?>
<p>
<label for="<?php echo $this->get_field_id( 'title_type' ); ?>"><?php _e( 'Display Product Titles :', 'cwppos' ); ?></label>
<input id="<?php echo $this->get_field_id( 'title_type' ); ?>" name="<?php echo $this->get_field_name( 'title_type' ); ?>" type="checkbox" <?php checked( $title_type ); ?> />
</p>
<p>
<label for="<?php echo $this->get_field_id( 'show_image' ); ?>"><?php _e( 'Display Product Image :', 'cwppos' ); ?></label>
<input id="<?php echo $this->get_field_id( 'show_image' ); ?>" name="<?php echo $this->get_field_name( 'show_image' ); ?>" type="checkbox" <?php checked( $show_image ); ?> />
</p>
<?php }
// Updating widget replacing old instances with new
public function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
$instance['no_items'] = ( ! empty( $new_instance['no_items'] ) ) ? strip_tags( $new_instance['no_items'] ) : '';
$instance['cwp_tp_category'] = ( ! empty( $new_instance['cwp_tp_category'] ) ) ? strip_tags( $new_instance['cwp_tp_category'] ) : '';
$instance['title_type'] = (bool) $new_instance['title_type'] ;
$instance['show_image'] = (bool) $new_instance['show_image'] ;
// Added by Ash/Upwork
$instance['cwp_tp_buynow'] = ( ! empty( $new_instance['cwp_tp_buynow'] ) ) ? strip_tags( $new_instance['cwp_tp_buynow'] ) : '';
$instance['cwp_tp_readreview'] = ( ! empty( $new_instance['cwp_tp_readreview'] ) ) ? strip_tags( $new_instance['cwp_tp_readreview'] ) : '';
$instance['cwp_tp_layout'] = ( ! empty( $new_instance['cwp_tp_layout'] ) ) ? strip_tags( $new_instance['cwp_tp_layout'] ) : '';
$instance['cwp_tp_rating_type'] = ( ! empty( $new_instance['cwp_tp_rating_type'] ) ) ? strip_tags( $new_instance['cwp_tp_rating_type'] ) : '';
// Added by Ash/Upwork
return $instance;
}
} // end Class cwp_top_products_widget
// Register and load the widget
function cwp_load_top_products_widget() {
register_widget( 'cwp_top_products_widget' );
}
add_action( 'widgets_init', 'cwp_load_top_products_widget' );