the_ID(), $post->ID… מחזירים את ה ID של הבלוג במקום של הפוסט

פורום התמיכה פתוח למשתמשים מנויים בלבד. יש להתחבר או להרשם כדי להוסיף דיון או תגובה בפורום.

פורום התמיכה הועבר
על מנת שנוכל לתת לכם שירות ותמיכה בצורה אישית יותר, פורום התמיכה הועבר למערכת טיקטים באמצעות האימייל. בימים הקרובים יסגר הפורום לכתיבת הודעות חדשות לחלוטין.

ראשי פורומים תמיכה the_ID(), $post->ID… מחזירים את ה ID של הבלוג במקום של הפוסט

דיון זה מוגדר: סגור

תגיות: 

מוצגות 11 תגובות – 1 עד 11 (מתוך 11 סה״כ)
  • מאת
    תגובות
  • #44150

    nuriel hatav
    משתתף

    בעמוד הפוסט ה 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 המוחזר באותו עמוד.

    #44188

    Yakir Sitbon
    משתתף

    האם מיקמת את הקוד שלך תחת הקובץ header.php? אם כן באיזה איזור?

    #44189

    nuriel hatav
    משתתף

    לא, מיקמתי את הקוד בתוך וידג'ט:

    <?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

    #44190

    Yakir Sitbon
    משתתף

    השאלה העיקרית מאיפה אתה קורא לאותו ווידג'ט?

    #44192

    nuriel hatav
    משתתף

    תיקון, למעשה זהו וידג'ט בתוך פלאגין, כלומר יצרתי פלאגין חדש, הפעלתי אותו והכנסתי וידג'ט בתוך הקוד של הפלאגין.

    #44193

    Yakir Sitbon
    משתתף

    והפלאגין עצמו.. באיזה איזור הוא זורק את הווידג'ט?

    #44208

    nuriel hatav
    משתתף

    הפלאגין לא זורק את הוידג'ט בשום מקום, הפלאגין פשוט עושה רגיסטר לוידג'ט כמו כל וידג'ט אחר.

    	// Register and load the widget
    	function cpf_load_widget()
    	{
    		register_widget( 'cpf_widget' );
    	}
    	
    	add_action( 'widgets_init', 'cpf_load_widget' );
    #44212

    Yakir Sitbon
    משתתף

    אני יותר מתכוון על איזור ההדפסה שלו. האם זה נמצא באיזור Sidebar מוגדר שמגיע מ-pojo?

    #44213

    nuriel hatav
    משתתף

    סיידבר צדדי ראשי.

    #44303

    Yakir Sitbon
    משתתף

    יש פה קוד מיוחד שדאגנו לקשר את האיזור הסיידברים. ככה שכל מה שיכנס לשמה יחשב "כאילו" אתה נמצא בעמוד שאחראי עליו ולא על הפוסט הספציפי. לצורך העניין מתי שאתה מפעיל שמה Menu, אתה תקבל את העמוד שאחראי עליו כ-Current וככה האתר כביכול נמצא במצב של אותו איזור.

    בכל אופן, תוכל לצאת מהמצב הזה ברמת הווידגט אם תרצה על ידי השימוש בקוד:

    po_change_loop_to_parent();
    $post_id = get_the_ID();
    po_change_loop_to_parent( 'change' );
    
    // $post_id = the current post ID.

    בהצלחה.

    #44309

    nuriel hatav
    משתתף

    תודה רבה.

מוצגות 11 תגובות – 1 עד 11 (מתוך 11 סה״כ)

הפורום 'תמיכה' נסגר לדיונים ולתגובות חדשות.