🔥 ۴۰ درصد تخفیف ثبت‌نام دوره‌ها قبل از افزایش قیمت‌ها
۰ ثانیه
۰ دقیقه
۰ ساعت
۶ نورا سیف
Undefined array key "video_url"
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۱۱ مهر ۱۴۰۲

سلام قربان - پست سفارشی course با موفقیت اضافه میشه- ولی وقتی روی افزودن دوره جدید کلیک میکنم خطای : 

( ! ) Warning: Undefined array key "video_url" in C:\wamp\www\tarjomannegar\wp-content\plugins\oop-plugin\class\metaBox_VideoUrl.php on line 27


ظاهر میشه - با اینکه  در کلاس metaBox_VideoUrl مشخص کردیم که فقط برای پست‌های "پست و برگه" از این متاباکس استفاده بشه ولی روی پست سفارشی course هم اعمال میشه - من دقیقا کدهای پیوستی این سرفصل استفاده کردم و این خطا ظاهر میشه - با تشکر 

کد هایی که تو metaBox_VideoUrl.php زدین رو بزارین تا بررسی بشه

واله همدانی ۱۱ مهر ۱۴۰۲، ۱۵:۲۰
<?php
//include_once 'BaseMetaBox.php';
//use BaseMetaBox;
class metaBox_VideoUrl extends BaseMetaBox
{
    public function __construct()
    {
        $this->ID = 'video_url';
        $this->title = 'لینک ویدیو';
        $this->callback = 'layout';
        $this->screen = ['post','page'];
        parent::__construct();
    }
    public function layout($post)
        // TODO: Implement layout() method.
    {
        ?>
        <label for="video_url">لینک ویدیو</label>
        <input type="text" value="<?php echo get_post_meta($post->ID, '_oop_video_url', true) ?>" name="video_url"
               id="video_url" placeholder="لینک ویدیو خود را وارد نمایید...">
    <?php }
    public function save($post_id)
    {
        // TODO: Implement save() method.
        update_post_meta($post_id, '_oop_video_url', $_POST['video_url']);
    }
}
نورا سیف ۱۱ مهر ۱۴۰۲، ۱۵:۲۱

مشکل تو callback هستش در کلاس اگر بخوایم به متد دسترسی داشته باشیم با کلمه کلیدی this استفاده میکنیم

کد درست شما

<?php
//include_once 'BaseMetaBox.php';
//use BaseMetaBox;
class metaBox_VideoUrl extends BaseMetaBox
{
    public function __construct()
    {
        $this->ID = 'video_url';
        $this->title = 'لینک ویدیو';
        $this->callback = array($this, 'layout'); // تغییر نیافته
        $this->screen = ['post','page'];
        parent::__construct();
    }
    public function layout($post)
    {
        ?>
        <label for="video_url">لینک ویدیو</label>
        <input type="text" value="<?php echo get_post_meta($post->ID, '_oop_video_url', true) ?>" name="video_url"
               id="video_url" placeholder="لینک ویدیو خود را وارد نمایید...">
        <?php
    }
    public function save($post_id)
    {
        // TODO: Implement save() method.
        update_post_meta($post_id, '_oop_video_url', $_POST['video_url']);
    }
}
واله همدانی ۱۲ مهر ۱۴۰۲، ۰۹:۳۶

باسلام منم این مشکل رو دارم کاری که گفتین رو انجام دادم اما مشکل حل نشد

 

متاباکس ایجاد میشه اما مقدار داخلش رو بر نمیگردونه

گردآفرید ملایری ۰۶ اسفند ۱۴۰۲، ۱۷:۳۰
گردآفرید ملایری ۰۶ اسفند ۱۴۰۲، ۱۷:۳۵

سلام
باید قبل از کد 

update_post_meta($post_id, '_oop_video_url', $_POST['video_url']);

چک کنید که آیا video_url ست شده یا نه . به این صورت عمل کنید مشکل رفع میشه. استاد هم در ویدئو گفته بود خودتون این اعتبار سنجی‌ها رو اعمال کنید.

if ( isset( $_POST['video_url'] ) ) {
			update_post_meta($post_id, '_oop_video_url', $_POST['video_url']);
		}

 

موفق باشید

حافظ زالی ۰۴ اردیبهشت ۱۴۰۳، ۱۷:۰۱