תגיות: Atlanta
-
מאתתגובות
-
24/02/2016 בשעה 21:03 #47516
משום מה יש בעיה ביצירת אובייקט WP_Query בתוך מחלקה, הדף נתען ריק כמו בשגיאת סיטקס. מחוץ למחלקה אין בעיה.
האם יש לכם מושג למה?הקוד שלי(מתוך תוסף):
class Architect { private $content; private $side; function __construct() { $this->setAll(); add_shortcode('architects-side', array( $this, 'getSide' )); } public function setAll() { global $wpdb, $post, $wp_query; $args_a = array( 'post_type' => 'post', 'posts_per_page' => -1, /*'meta_key' => 'mycustomfield',*/ /*'meta_value' => 1,*/ 'suppress_filters' => false ); $the_query = new WP_Query( $args_a ); if ( $the_query->have_posts() ) { $architects_ = array(); while ( $the_query->have_posts() ) { $the_query->the_post(); //the_title(); //print print_r(get_field('project_architector', get_the_ID())); $architect = get_field('project_architector', get_the_ID()); if( $architect["display_name"] ) { $counter = array_key_exists($architect["display_name"], $architects_) ? $architects_[$architect["display_name"]]["counter"] + 1 : 1; $architects_[$architect["display_name"]] = array_merge(array("counter" => $counter),$architect); } } $this->side = "<div id=\"architects-accordion\" class=\"panel-group\">"; $c = 1; foreach($architects_ as $architect_) { //$this->content_ = "555"; $this->side .= " <div class=\"panel panel-warning\"> <div class=\"panel-heading\"> <div class=\"panel-title\"> <a data-toggle=\"tab\" data-parent=\"#architects-accordion\" data-architect-id=\"".$architect_["ID"]."\" href=\"#architect-".$architect_["ID"]."-tab\"> <span class=\"badge font-size-inherit\">".$c++."</span> ".$architect_["display_name"]." </a> </div> </div> <div style=\"height: 0px;\" aria-expanded=\"false\" id=\"architect-".$architect_["ID"]."-collapse\" class=\"architect-".$architect_["ID"]." panel-collapse collapse\" data-toggle=\"false\"> <div class=\"panel\"> <div class=\"panel-body\"> <small class=\"text-danger\"><i class=\"fa fa-chevron-left\"></i> סך פרוייקטים: ".$architect_["counter"]."</small> </div> </div> </div> </div> "; } $this->side .= "</div>"; wp_reset_postdata(); } } public function getSide() { return $this->side; } } $architect = new Architect();
24/02/2016 בשעה 21:05 #47517בקיצור:
What prevent WP_Query() to work inside class method? class MyClass { function __construct() { $this->myFunc(); // not work } public function myFunc() { global $post, $wp_query; $args_ = array( 'post_type' => 'post', 'posts_per_page' => -1, /*'meta_key' => 'mycustomfield',*/ /*'meta_value' => 1,*/ 'suppress_filters' => false ); $the_query = new WP_Query( $args_ ); // פה התוכנית נכשלת <-------- /*...*/ } }
24/02/2016 בשעה 21:45 #47518לפני הכל:
1) תעיף את ה-global למשתנים$post, $wp_query
. אין לך שום עניין שמה.
2) תשתמש בשם אחר מאשר$the_query
.לבעיה:
3) מה שגיאת הסינטקס שאתה מקבל?24/02/2016 בשעה 23:11 #475241) העפתי
2) החלפתי
3) Fatal error: Call to undefined function is_user_logged_in() in /home/oricoil/public_html/roofdagan1/wp-includes/query.php on line 317424/02/2016 בשעה 23:12 #47525תנסה לאתחל את הפונקציה setAll() מהשורטקוד עצמו? יש לי תחושה שאתה עושה את זה לפני ה-init.. אז תנסה לבדיקה משמה..
24/02/2016 בשעה 23:18 #47528זו השגיאה שמקבים אם אני קורא ל setAll() או ל getSide() מהשורטקוד:
Strict Standards: call_user_func() expects parameter 1 to be a valid callback, non-static method Architect::getSide() should not be called statically in /home/oricoil/public_html/roofdagan1/wp-includes/shortcodes.php on line 326 Fatal error: Using $this when not in object context in /home/oricoil/public_html/roofdagan1/wp-content/plugins/architects/architects.php on line 85
25/02/2016 בשעה 01:24 #47532טוב הבעיה נפתרה, מסתבר שבתוך תוסף צריך לעשות איניט לקריאת פונקציה:
add_action('init', array($this, 'setAll'));
במקום
$this->setAll();
25/02/2016 בשעה 08:03 #47539זה מה שהתכוונתי 🙂
שמח שהסתדרת..
-
מאתתגובות
הפורום 'תמיכה' נסגר לדיונים ולתגובות חדשות.