תגיות: Atlanta
-
מאתתגובות
-
21/01/2016 בשעה 19:03 #44150
בעמוד הפוסט ה ID שמוחזר מחוץ ללולאה הוא ה ID של הבלוג ולא של הפוסט עצמו. איך ניתן לקבל ID של הפוסט מחוץ ללולאה?
ניסיתי את זה:$post_id = get_the_ID(); /***/ $post_id = $post->ID; /***/ $current_post = get_queried_object(); $post_id = $current_post ? $current_post->ID : null;
ניתן לראות בלינק שהבאתי בסליידר שמאלי רשום ה ID המוחזר באותו עמוד.
22/01/2016 בשעה 11:14 #44188האם מיקמת את הקוד שלך תחת הקובץ header.php? אם כן באיזה איזור?
22/01/2016 בשעה 11:43 #44189לא, מיקמתי את הקוד בתוך וידג'ט:
<?php /* Plugin Name: custom-post-field Description: custom-post-field */ // Creating the widget class cpf_widget extends WP_Widget { function __construct() { parent::__construct( // Base ID of your widget 'cpf_widget', // Widget name will appear in UI __('CPF Widget', 'cpf_widget_domain'), // Widget description array( 'description' => __( 'Custom Post Field Widget', 'cpf_widget_domain' ), ) ); } // Creating widget front-end // This is where the action happens public function widget( $args, $instance ) { global $post, $wp_query, $post_inloop_id; $title = apply_filters( 'widget_title', $instance['title'] ); // before and after widget arguments are defined by themes echo $args['before_widget']; if ( ! empty( $title ) ) echo $args['before_title'] . $title . $args['after_title']; $current_post = get_queried_object(); $post_id_ = $current_post ? $current_post->ID : null; //$post_id = $post_inloop_id; $bulet = "<i class=\"fa fa-check-circle\"></i>"; $resoult_ = "<ul class=\"post-custom-fields\">"; $fields = get_fields($post_inloop_id); /*print "<div style=\"text-align: left\">"; print "autlog:<br>"; print "get_queried_object()->ID = <br>".$post_id_."<br>"; print "the_ID() = <br>"; the_ID(); print "<br>"; print "get_the_ID() = <br>".get_the_ID()."<br>"; print "post->ID = <br>".$post->ID."<br>"; print "get_the_ID() = <br>".get_the_ID()."<br>"; print "wp_query->post->ID = <br>".$wp_query->post->ID."<br>"; print "</div>";*/ if( $fields ) { foreach( $fields as $field_name => $value ) { // get_field_object( $field_name, $post_id, $options ) // - $value has already been loaded for us, no point to load it again in the get_field_object function $field = get_field_object($field_name, $post_id, array('load_value' => false)); $type = $field['type']; $finishing = ""; if($type == "true_false") { $finishing .= "<li class=\"post-custom-field\">"; $checked = $value == 1 ? "checked" : ""; $value = "<input name=\"". $field_name ."\" id=\"". $field_name ."\" class=\"css-checkbox\" type=\"checkbox\" ". $checked ."><label onclick=\"return false;\" class=\"css-label\" for=\"". $field_name ."\">". $field['label'] ."</label>"; } else if($field_name == "project_youtube") { if($value == "") { continue; } $finishing .= "<li class=\"post-custom-field post-custom-field-youtube\">"; $value = "<a href=\"".$value."\">". $field['label'] ."</a>"; } else if($field_name == "project_date_of_construction") { $value = preg_replace('/^.*(\d{2})(\d{2})(\d{4})$/', '$1/$2/$3', $value); $finishing .= "<li class=\"post-custom-field\">"; $finishing .= "<div class=\"post-custom-field-title\">". $bulet ." ". $field['label'] ."</div>"; } else { $finishing .= "<li class=\"post-custom-field\">"; $finishing .= "<div class=\"post-custom-field-title\">". $bulet ." ". $field['label'] ."</div>"; } $finishing .= "<div class=\"post-custom-field-content\">". $value ."</div>"; $finishing .= "</li>"; $resoult_ .= $finishing; } } $resoult_ .= "</ul>"; // This is where you run the code and display the output echo __( $resoult_, 'cpf_widget_domain' ); echo $args['after_widget']; } // Widget Backend public function form( $instance ) { if ( isset( $instance[ 'title' ] ) ) { $title = $instance[ 'title' ]; } else { $title = __( 'New title', 'cpf_widget_domain' ); } // Widget admin form ?> <p> <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></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> <?php } // Updating widget replacing old instances with new public function update( $new_instance, $old_instance ) { $instance = array(); $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; return $instance; } } // Class cpf_widget ends here // Register and load the widget function cpf_load_widget() { register_widget( 'cpf_widget' ); } add_action( 'widgets_init', 'cpf_load_widget' ); ?>
שורה 35-55
22/01/2016 בשעה 11:44 #44190השאלה העיקרית מאיפה אתה קורא לאותו ווידג'ט?
22/01/2016 בשעה 11:46 #44192תיקון, למעשה זהו וידג'ט בתוך פלאגין, כלומר יצרתי פלאגין חדש, הפעלתי אותו והכנסתי וידג'ט בתוך הקוד של הפלאגין.
22/01/2016 בשעה 12:24 #44193והפלאגין עצמו.. באיזה איזור הוא זורק את הווידג'ט?
23/01/2016 בשעה 19:07 #44208הפלאגין לא זורק את הוידג'ט בשום מקום, הפלאגין פשוט עושה רגיסטר לוידג'ט כמו כל וידג'ט אחר.
// Register and load the widget function cpf_load_widget() { register_widget( 'cpf_widget' ); } add_action( 'widgets_init', 'cpf_load_widget' );
23/01/2016 בשעה 20:03 #44212אני יותר מתכוון על איזור ההדפסה שלו. האם זה נמצא באיזור Sidebar מוגדר שמגיע מ-pojo?
23/01/2016 בשעה 20:13 #44213סיידבר צדדי ראשי.
24/01/2016 בשעה 15:15 #44303יש פה קוד מיוחד שדאגנו לקשר את האיזור הסיידברים. ככה שכל מה שיכנס לשמה יחשב "כאילו" אתה נמצא בעמוד שאחראי עליו ולא על הפוסט הספציפי. לצורך העניין מתי שאתה מפעיל שמה Menu, אתה תקבל את העמוד שאחראי עליו כ-Current וככה האתר כביכול נמצא במצב של אותו איזור.
בכל אופן, תוכל לצאת מהמצב הזה ברמת הווידגט אם תרצה על ידי השימוש בקוד:
po_change_loop_to_parent(); $post_id = get_the_ID(); po_change_loop_to_parent( 'change' ); // $post_id = the current post ID.
בהצלחה.
24/01/2016 בשעה 15:45 #44309תודה רבה.
-
מאתתגובות
הפורום 'תמיכה' נסגר לדיונים ולתגובות חדשות.