مشکل با ثبت افزونه در مخزن اصلی وردپرس

rocki3oy

کاربر عضو
با سلام خدمت دوستان عزیز من می خوام یک افزونه در مخزن وردپرس ثبت کنم مشکلاتی را برای من ارسال می کنند که من رفع می کنم اما چند مورد دیگه مونده که ایمیل زیر را برای من ارسال کردن خواهش می کنم یک فردی که تجربه داره واضع بگه که دقیقا باید چی کار کنمم.

ممنونم از راهنمای شما دوستان عزیز.

1) You have not corrected the issues.

2) You need to delete the file js/jquery.min.js from your plugin

3) The file includes/send-offer.php is still calling wp-load.php directly AND is directly accessible without a nonce.

4) function eopl_offer_css is still using link tags to call stylesheets instead of wp_enqueue_style.

5) Also functions like function offer_options_panel() are still poorly named.




من مورد 2 را متوجه شدم که میگه فایل jquery خودتو از پلاگین حذف کن و از jquery وردپرس استفاده کن.خوب مشکلی که اینجا هست از jquery وردپرس استفاده می کنم یک دستوری که برای ajax من برای show و hidden فرم استفاده می کنم کار نمی کنه.اما مخزن وردپرس اصرار داده که این jquery باید پاک بشه.

دوستان عزیز خواهش می کنم این 5 مورد را واضع به من بگید چه کاری انجام بدم.

با تشکر از این که وقت می زارید.

 

rocki3oy

کاربر عضو
دوستان عزیز ممنون میشم راهنمایی بفرمایید.

در خصوص مورد 3 نیز خدمت شما عرض کنم اصرار دارند که wp-load.php که در فایل send-offer.php صدا زده میشه حذف بشه اما با حذف این مورد دیگ دستوراتی مانند get_option('test')کار نمی کنه.

ممنون میشم راهنمایی کوچیک بفرمایید.

با تشکر.

 

MahdiY

راهبر انجمن
سلام

2. در مورد اون خطا در قسمت console مرورگر ببینید چه خطایی دارید.

3. بجز get_option به چه فانکشن های دیگه ای نیاز دارید. این یک ریسک امنیتی هست. دلیل صدا زدن مستقیم send-offer.php چی هست؟

 

rocki3oy

کاربر عضو
سلام

2. در مورد اون خطا در قسمت console مرورگر ببینید چه خطایی دارید.

3. بجز get_option به چه فانکشن های دیگه ای نیاز دارید. این یک ریسک امنیتی هست. دلیل صدا زدن مستقیم send-offer.php چی هست؟
در خصوص مورد اول من اول jquery که خودم اضافه کردم حذف کردم اما و در consol خطای زیر مشاهده می شود:

TypeError: $ is not a function



که گفته در لاین ۲۷۴
رفتم به این خط دیدم به کد زیر گیر داده:

$(document).ready(function() {
....
});



و اگر این خط را پاک کنم خط بعدی را ایراد میگیره کلا زمانی که من jquery خودمو از فایل پلاگین حذف می کنم تمامی کدهای ajax را گیر میده.

====================

در خصوص مورد دو باید خدمت شما عرض کنم من یک فرم ایجاد کردم که یک سری مقادیر را به صورت ajax به فایل send-offer.php ارسال می کنه که محتویات آن به شرح زیر می باشد.که برای اینکه یه سری فانکشن های وردپرس لود بشن باید از فایل wp-load استفاده کنم در غیر این صورت لود نمیشن.

من یک فرم دارم که به صورت ajax به فایل send-offer.php ارسال می کنه.

کد دستوری که به فایل send-offer.php ارسال می کنم.

$(document).ready(function() {
$("#btn-formPKP").click(function(){
$("#offer-price-lower").toggle(300);
});
$('#offerbtn').click(function() {
$('#offerbtn').attr('value', '<?php _e('sending...','edd-offer-alfatheme'); ?>');
$.post("<?php echo EOPL_URL; ?>includes/send-offer.php", $("#form-PKP").serialize(), function(response) {
$('#successPKP').html(response);
$('#offerbtn').attr('value', '<?php _e('send','edd-offer-alfatheme'); ?>');
});
return false;
});
});




محتویات فایل send-offer.php

require_once("../../../../wp-load.php");
$msgerr = array();

$user_id = intval( $_POST['user_id'] );
if ( ! $user_id ) {
$user_id = '';
}
$email = sanitize_email($_POST['email']);
if ( ! $email ) {
$email = '';
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo $msgerr['email_error'] = '<div class="alert alert-danger text-justify">'.$email_error_txt.'</div>';
}

$to = get_option('eopl_admin_email');
$subject="تست عنوان موضوع";
$email_wppanel = get_option('eopl_email_wppanel');
$message = $user.' '.$email;
$headers = 'From: '.$email_wppanel . "\r\n";
if(!count($msgerr)){
//mail($to, $subject, $message, $headers); //This method sends the mail.
wp_mail($to,$subject,$message,$headers);
echo $msgerr['success'] = "<div class='alert alert-success text-justify'>با موفقیت انجام شد.</div>"; // success message
}


فقط این دو مورد ایراد مونده باقی موارد را انجام دادم.

============================

به طور خلاصه مجددا مشکلات را خدمت شما عرض می کنم.

وب سایت وردپرس میگه که نباید فایل wp-load.php در فایل send-offer صدا زده بشه، خوب اگر من این فایل را صدا نزنم یه سری فانکش های وردپرس اصلا کار نمی کنند.

--------

وب سایت وردپرس می گه باید فایل jquery  که من با دستور زیر در پلاگین فراخوانی می کنم باید حذف بشه، اگر این مورد را حذف کنم اون کد آجاکس که برای نمایش و مخفی کردن فرم استفاده می شه کار نمی کنه.

wp_deregister_script('jquery');
wp_register_script('jquery', EOPL_JS_URL.'jquery.min.js', true, '1.11.3');
wp_enqueue_script('jquery');


============================

ممنون میشم راهنمایی بفرمایید.

با تشکر از اینکه وقت می زارید تشکر فراوان.

 

MahdiY

راهبر انجمن
سلام

1.

5 روش رو تست بزن. روش 3ام بنظرم بهترین گزینس

2. از آجکس خود وردپرس استفاده کنید. بدون دردسر شیک و مجلسی!



 

rocki3oy

کاربر عضو
با سلام و احترام.

آقا mahdiy عزیز با مورد زیرکه فرمودید:

1. 5 روش اجرای یک کد بعد از لود شدن کامل صفحه - Snippets

5 روش رو تست بزن. روش 3ام بنظرم بهترین گزینس


با کد بالا مشکل آجکس حل شد.

--------------------

فقط تنها موردی که مونده صدا زدن فایل wp-load.php هست.

برای حل مشکل فایل send-offer.php چی کار کنم؟

مخزن وردپرس از کد زیر ایراد گرفته که میگه نباید این فایل صدا زده بشه.

require_once("../../../../wp-load.php");


واقعا خییلی ممنون از کمکتون خواهش می کنم برای این مورد یه مقدار کاملتر راهنمایی کنید.

محبت می کنید.

 

rocki3oy

کاربر عضو
برای من سواله چرا اگر دستور زیر در فایل send-offer.php نباشه اصلا دستورات اجرا نمیشه!!!!

کد:
require_once("../../../../wp-load.php");
 

MahdiY

راهبر انجمن
با سلام و احترام.

آقا mahdiy عزیز با مورد زیرکه فرمودید:

1. 5 روش اجرای یک کد بعد از لود شدن کامل صفحه - Snippets

5 روش رو تست بزن. روش 3ام بنظرم بهترین گزینس


با کد بالا مشکل آجکس حل شد.

--------------------

فقط تنها موردی که مونده صدا زدن فایل wp-load.php هست.

برای حل مشکل فایل send-offer.php چی کار کنم؟

مخزن وردپرس از کد زیر ایراد گرفته که میگه نباید این فایل صدا زده بشه.

require_once("../../../../wp-load.php");


واقعا خییلی ممنون از کمکتون خواهش می کنم برای این مورد یه مقدار کاملتر راهنمایی کنید.

محبت می کنید.
سلام

شما به آجکس نیاز دارید پس از آجکس خود وردپرس استفاده کنید. ساده تر و ایمن تر هستش

برای من سواله چرا اگر دستور زیر در فایل send-offer.php نباشه اصلا دستورات اجرا نمیشه!!!!

require_once("../../../../wp-load.php");

سلام

چون وقتی شما فایل send-offer.php رو بطور مستقیم باز میکنید اصلا وردپرس لود نمیشود. درسته که داخلی دایرکتوری های وردپرس هست ولی وردپرس لود نشده

 

rocki3oy

کاربر عضو
با سلام و احترام.

آقا MahdiY عزیز با راهنمایی های شما این موارد رفع شد و مورد تایید وب سایت وردپرس بود.

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

function eopl_page_option_function() needs a nonce

## Not using Nonces and/or checking permissions

Please add a nonce to your POST calls to prevent unauthorized access.

Keep in mind, check_admin_referer alone is NOT bulletproof security. Do not rely on nonces for authorization purposes. Use current_user_can() in order to prevent users without the right permissions from accessing things.

https://codex.wordpress.org/WordPress_Nonces




ممنون میشم یک مقدار منو راهنمایی کنید و همین طور یک مثال در خصوص چیزی که می خواین برام بیارید خیلی ممنون میشم.

لطفا در خصوص صفحه زیر یک توضیح بدید که کجا ها استفاده می شود و برای چیست:

https://codex.wordpress.org/WordPress_Nonces


با تشکر از محبت شما.

 

rocki3oy

کاربر عضو
دوستان عزیز خواهش می کنم در خصوص صفحه زیر توضیح بدید.

https://codex.wordpress.org/WordPress_Nonces


توضیح در خصوص:

توضیحات این صفحع به چه درد می خوره؟

کجاها استفاده میشه؟

چند مثال هم بیارید ممنون میشم.

با تشکر از محبت شما.

 

MahdiY

راهبر انجمن
دوستان عزیز خواهش می کنم در خصوص صفحه زیر توضیح بدید.

https://codex.wordpress.org/WordPress_Nonces


توضیح در خصوص:

توضیحات این صفحع به چه درد می خوره؟

کجاها استفاده میشه؟

چند مثال هم بیارید ممنون میشم.

با تشکر از محبت شما.
سلام

تاخیر به دلیل امتحانات!

nonce یه کد هش ساخته شده توسط یسری نمک و اکشن فرم هست! مثلا فرض کنید شما یه فرم داخل سایت دارید. میگید من یه nonce نیاز دارم که میخوام login کنم. این توابع میان برای شما یدونه کد ایجاد میکنن و به شما میگه هر موقع خواستید فرم را ثبت کنید این nonce رو برای من بفرستید.

در زمان ارسال فرم nonce ارسال شده به اکشن درخواستی (login) بررسی میشه. در صورتی که این دو برابر بودند یعنی فرم در زمان مقرر و توسط کاربر معتبر ارسال شده است. این nonce در وردپرس محدودیت زمانی 24 ساعت دارد. یعنی در مدت 24 ساعت یکتا خواهد بود.

مثال های کلاس زیر رو ببین تا متوجه کلیت این موضوع بشید



 

rocki3oy

کاربر عضو
با سلام و احترام.

ممنونم از این که راهنمایی می کنید.

این ایرادی که وب سایت وردپرس از افزونه گرفته فکر کنم آخرین مورد باشه.

من کد زیر را در فرم اضافه کردم.

<?php wp_nonce_field( 'delete-post_'.get_the_ID() ); ?>


خروجی این کد چیزی شبیه عبارت زیر در فرم اضافه شد.

<input id="_wpnonce" name="_wpnonce" value="15c80fed8e" type="hidden">
<input name="_wp_http_referer" value="/wp1/downloads/%d9%82%d8%a7%d9%84%d8%a8-%d9%88%d8%b1%d8%af%d9%be%d8%b1%d8%b3-%d9%81%db%8c%d9%84%d9%85-%d9%88-%d8%a7%d9%86%db%8c%d9%85%d8%b4%db%8c%d9%86-moview/" type="hidden">


خوب الان همین کار کافیه؟!

فرمی که من ایجاد کردم فقط در دیتابیس ذخیره می کنه و به ایمیل یک متنی ارسال می کنه.

 

rocki3oy

کاربر عضو
آقا مهدی عزیز من نمونه شما را دیدم متاسفانه من یک مقدار در  کدهایی که از class استفاده میشه مشکل دارم نمیشه یک نمونه بسیار ساده تر قرار بدید.

ممنونم

شرمنده.

 
بالا