💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۶ مسعود عظیمی
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']);
		}

 

موفق باشید

احمد اسماعیلی ۰۴ اردیبهشت ۱۴۰۳، ۱۷:۰۱