lord_viper

استاد
  • تعداد ارسال ها

    653
  • تاریخ عضویت

  • آخرین بازدید

  • Days Won

    16

تمامی ارسال های lord_viper

  1. $var = array(); if(have_posts()) : $count = 0; while(have_posts()) : the_post(); $var[] = get_the_title(); endwhile; endif; تمامی عنوانها درون متغییر var$ ذخیره میشن حالا متغییر var$ رو میتونین استفاده کنید
  2. ببینید هوک چیز خاص و بزرگی نیست.تو اکثر سیستمهای تحت وب و حتی ویندوز سیستمی بنام هوک وجود داره هوک این قابلیت رو به شما میده که روند اجرای یک تابع رو مانیتور یا تغییر بدید. این به این دلیل هست که شما وقتی از سیستم اماده مثل وردپرس استفاده میکنید.کدها نوشته شده و اماده هستن برای اضافه کردن بعضی قابلیتها شما نیاز به تغییر در بعضی از توابع وردپرس دارین مثلا شما یک پلاگین نوشتین میخواهید یک فایل javascript یا css به یک صفحه وردپرس اضافه کنین راه راحتش این هست که کدهای اون صفحه رو پیدا کنین و لینک فایلها رو در هدر اون قرار بدید.این کار شدنی هست اما روش درستی نیست چون 1.اگه وردپرس اپدیت بشه شما دوباره باید این کار رو انجام بدید 2.اگه بخواهید این پلاگین رو منتشر کنید بخش پلاگین وردپرس به شما اخطار میده در مورد ویرایش فایلهای اصلی وردپرس. برای رفع این مشکلات وردپرس هوک رو در اختیار کاربران قرار داده هوک یا قلاب راهکاری هست در زمان فراخوانی شدن تابع مورد نظر شما دستورات شما رو اجرا میکنه در ورد پرس از add_action برای تعریف هوک استفاده میشه که 4 پارامتر داره 2 تا اصلی و 2 تا اختیاری 1.اسم تابعی که میخواهید هوک کنید مثلا wp_head یا get_the_content یا pre_get_posts 2. اسم تابع شما (کدهای مورد نیاز رو باید در قالب یک تابع بنویسید)که باید در اون تابع وردپرس اجرا بشه وردپرس 2 تا هوک داره add_action و add_filter که دومی بیشتر برای تغییر در محتوا هست function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1); function add_filter($tag, $function_to_add, $priority, $accepted_args); مقدار priority اولویت اجرای هوک در لیست رو مشخص میکنه مثلا شما اگه نیاز دارید کد شما زودتر از بقیه کدها اجرا بشه مقدار1 و اگه نیازه بعد از همه کدها اجرا بشه مقدار 9999 بهش میدین که این مقدار اختیاری هست و پیشفرض 10 مقدار accepted_args تعداد ارگومانهایی هست که به تابع شما ارسال بشه که پیشفرض 1 هست مثال:شما میخواهید یک فایل js یا css رو به هدر بخش کاربری اضافه کنید کد هوک شما به صورت زیر میشه function child_theme_head_script() { wp_register_style( 'prefix-style', plugins_url('/css/your-stylesheet.css', __FILE__) ); wp_enqueue_script('custom_script', plugins_url('/js/your-script.js', __FILE__),array('jquery')); } add_action( 'wp_head', 'child_theme_head_script' ); خب حالا هوک چطور کار میکنه تو سیستم وردپرس اگه به فایل هدر یکی از تمپلیتهای استاندارد وردپرس نگاه بندازین به صورت زیر هست <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=assetsice-width, initial-scale=1"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/assets/css/bootstrap.min.css"> <link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/assets/css/custom.css"> <title></title> <?php wp_head(); ?> </head> <body> از تابع wp_head استفاده میکنه وقتی تابع wp_head اجرا میشه چه اتفاقی می افته این تابع درون فایل wp-includes/general-template.php هست function wp_head() { /** * Prints scripts or data in the head tag on the front end. * * @since 1.5.0 */ do_action( 'wp_head' ); } کار تابع do_action این هست که میاد هوک موبوطه رو از لیست هوکها اجرا میکنه که در اینجا بهش گفته شده هوک 'wp_head' رو اجرا کنه و تابع شما اجرا میشه و فایل js و css شما به هدر سایت اضافه میشه
  3. ممکنه بخاطر ادرس دهی استایلتون باشه شما میتونین از کد اوئلیه خودتون استفاده کنین فقط متد فورم رو به post تغییر بدین <form target="_blank" action="http://anday.mihanstore.net/product.php?id=411" method="post"> <input class= "ads-btn" type="submit" value=" اطلاعات بیشتر "/> </form>
  4. با سلام و احترام برای ویجت بایگانی تاریخ خورشیدی هیچ فونتی در نظر گرفته نشده و css هم براش نوشته نشده از استایل پیشفرض وردپرس استفاده شده
  5. ممکنه تو کدهاتون چیزی هست که شما رو ریدایرکت میکنه به صفحه ایندکس اگه شما میخواهید حتما و حتما از دکمه استفاده کنید فرم رو حذف کنید و کد دکمه تون به صورت زیر تغییر بدید <input class="ads-btn" type="submit" value=" اطلاعات بیشتر " onclick="window.location='http://anday.mihanstore.net/product.php?id=411'"/>
  6. مهمترین چیز این هست که شما به تاریخ مقالات دقت کنید. الگوریتم گوگل هر چند وقت یک بار بروز میشه و یک سری چیزها کم و یک سری چیزها زیاد میشه به همین دلیل ممکنه روشهای یک مقاله 2015 یا 2016 الان منسوخ شده باشه ولی چیزی که همیشه بوده و هست 1. تولید محتوا 2. نحوه نمایش و شناساندن اون محتوی به موتور جستجو هست که اون مطلب رو بهتر بدست بیاره و درک کنه شاید سایتی بتونه با روشهای بلک سئو خودشو یه مدت بالا نگه داره ولی این کار مقطعی هست و با تغییر الگوریتم گوگل یا ریپورت رنک خودشونو از دست میدن یکی از روشهایی که تو سئو تاثیر داره و معمولا سایتها استفاده میکنن گرفتن بک لینک هست (البته هر بک لینکی خوب نیست) و در نهایت با صرفا خوندن چند مقاله شما به بهترین نتیجه نمیرسین بلکه باید از کسی که تجربه عملی در سئو داره کمک بگیرید در این کار خیلی عجله نداشته باشید از پلاگینهای مربوط به سئو مثل all in one یا youast استفاده کنید اگه نیاز هست قالبتون رو برای سئو بهینه کنید تبلیغات کنید تا رنکتون بهتر بشه. البته اساتید و دوستان دیگه هستن که میتونن بهتر راهنمایی کنن
  7. لینک زیر میتونه به شما کمک کنه
  8. کاراکتر - جز کاراکترهای رزرو شده ریجکس هست باید قبلش \ بزارین که به عنوان عملیات در نظر نگیره بلکه یک کاراکتر حساب بکنه
  9. اینجوری فکنم درسته RewriteRule ^(.*)$ "http\:\/\/img\.example\.com\/wp\-content\/uploads\/$1" [R=301,L]
  10. افزونه

    این پلاگین ظاهرا همونیه که شما نیاز دارید https://wordpress.org/plugins/manageview-your-posts-only/
  11. این یک مثال از wp_query و حلقه وردپرس <?php // the query $args = array( 'author' => 123 ); $the_query = new WP_Query( $args ); ?> <?php if ( $the_query->have_posts() ) : ?> <!-- pagination here --> <!-- the loop --> <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <h2><?php the_title(); ?></h2> <?php endwhile; ?> <!-- end of the loop --> <!-- pagination here --> <?php wp_reset_postdata(); ?> <?php else : ?> <p><?php _e( 'متاسفانه پستی یافت نشد' ); ?></p> <?php endif; ?>
  12. تابع wp_copy_right درون فایل action.php نیست یک کاری که میتونین انجام بدین اینه که شما با firebug یا object inspector فایرفاکس میتونین اون لینک فوتر رو پیدا کنید و ادرس مورد نظر خودتونو قرار بدین بعد به تابع wp_copy_right برین لینک خودتونو اول تابع بزارین و خط بعد return بزارین نیازی به دیکد و غیره هم نیست function wp_copy_right(){ echo '<a href="http://forum.wp-parsi.com">wp-parsi.com</a>'; return;
  13. این کلاس کپچا هست که خودم نوشتم و استفاده میکنم <?php /** * @author lord_viper * @copyright 2013 */ class bn_captcha { private $font_size = 5; private $fontfilename = ''; private $bg_color = array(255,255,255); private $text_color = array(0,0,0); private $line = 0; private $noise = 0; private $elipse = 0; private $elfill = false; private $text = ''; private $img; protected static $instance; function __construct() { if (session_status() == PHP_SESSION_NONE) //if (!isset($_SESSION)) session_start(); } public static function instance() { if(!isset(self::$instance)) self::$instance = new self(); return self::$instance; } private function RandomString($length = 10, $type = 'char',$repeat=2) { $Special = '!@#$%^&*()-_ []{}<>~+=,.;:/?|'; $number = '0123456789'; $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; switch($type) { case 'all' :$str = $Special.$number.$chars;break; case 'char':$str = $chars;break; case 'num' :$str = $number;break; default :$str = $chars.$number; } return substr(str_shuffle(str_repeat($str,$repeat)),0,$length); } public function line($count) { $this->line = $count; return $this; } public function noise($count) { $this->noise = $count; return $this; } public function font($fontname,$fontsize) { $this->fontfilename = $fontname; $this->font_size = $fontsize; return $this; } public function ellipse($count,$fill=false) { $this->elipse = $count; $this->elfill = $fill; return $this; } public function text($text='') { $this->text = $text; return $this; } public function show($text_count=5,$text_type='all',$bgcolor='#000',$txtcolor='#FFFFFF',$echo=true) { if(empty($this->text)){ $this->text = self::RandomString($text_count,$text_type); $_SESSION['__captcha'] = strtolower($this->text); $this->text = wordwrap($this->text,1,' ',true) ; } $size = self::get_img_size(); $this->img = imagecreatetruecolor($size['width'],$size['height']); self::draw_ellipse($size); self::draw_line($size); imagefill($this->img,0,0,hexdec($bgcolor)); if(empty($this->fontfilename)) imagestring($this->img,5,10,rand(5,15),$this->text,hexdec($txtcolor)); else imagettftext($this->img,$this->font_size,0,10,rand($size['height']-15,$size['height']-5),hexdec($txtcolor),$this->fontfilename,$this->text); self::draw_noise($size); ob_start(); ImagePng($this->img); $img = base64_encode(ob_get_clean()); if($echo) echo "<img src='data:image/jpeg;base64,$img' />"; else return "<img src='data:image/jpeg;base64,$img' />"; } public function check_captcha($post) { return ($post==$_SESSION['__captcha']?true:false); } //______________________________________________________________________________________________________________________________ private function get_img_size() { $ret = array(); if(empty($this->fontfilename)){ $w = imagefontwidth($this->font_size); $h = imagefontheight($this->font_size); $ret['width'] = ($w * strlen($this->text)) + 20; $ret['height'] = $h + 20; }else{ $siz = imagettfbbox($this->font_size,0,$this->fontfilename,$this->text); $ret['width'] = $siz[4]+20; $ret['height'] = abs($siz[7])+20; } return $ret; } private function draw_line($size) { if($this->line>0){ $width = $size['width']; $height = $size['height']; $minwidth = intval($size['width'] / 4); for ($i = 0; $i <= $this->line; $i++){ imageline($this->img, rand(1, $minwidth), rand(1, $height), rand($width - $minwidth,$width), rand(1, $height), rand(1,16000000)); } } } private function draw_noise($size) { if($this->noise>0){ $width = $size['width']; $height = $size['height']; for ($i = 0; $i <= $this->noise; $i++){ imagesetpixel($this->img, rand(1, $width), rand(1, $height), rand(1,16000000)); } } } private function draw_ellipse($size) { if($this->elipse>0){ $width = $size['width']; $height = $size['height']; for ($i = 0; $i < $this->elipse; $i++){ $cx = (int)rand(15, $width - 5); $cy = (int)rand(15, $height - 5); $h = rand(1, 30); $w = rand(1, 30); if ($this->elfill) imagefilledellipse($this->img, $cx, $cy, $w, $h,rand(1,16000000)); else imageellipse($this->img, $cx, $cy, $w, $h,rand(1,16000000)); } } } } ?> برای استفاده به صورت زیر عمل کنید $cap = new bn_captcha; //check kardan captcha //$_POST['captcha'] مقدار input کد امنیتی هست name=captcha if($cap->check_captcha($_POST['captcha'])) echo 'captcha is true'; else echo 'captcha is false'; //ایجاد کپچا فقط عدد 6 کاراکتر echo $cap->show(6,'num'); //ایجاد کپچا عدد - حروف - سیمبل 6 کاراکتر echo $cap->show(6,'all'); // ایجاد کپچت فقط حروف 6 کاراکتر پس زمینه مشکی رنگ حروف سفی echo $cap->show(6,'char','#000','#FFF');
  14. سوال شما به این تاپیک مربوط نیست جواب: شما باید برای در جدول خود برای داده ها یک فیلد user_id در نظر بگیرید که id کاربر مورد نظر رو درونش قرار بدید با این کار به راحتی میتونین با یک سلکت اطلاعات هر کاربر رو بیرون بکشین مثلا select * from table where user_id=1
  15. برای ساخت ابزارک میتونین از اموزش سایت زیر استفاده کنید کدها گویا هستن https://wp-dreams.com/articles/2014/03/creating-a-wordpress-widget-a-simple-text-widget/ و کد مورد نظرتونو باید در تابع widget ابزارکتون قرار بدید function widget($args, $instance)
  16. برای ایجاد یک متاباکس از تابع add_metabox استفاده میشه و برای ذخیره متاباکس باید یک هوک به save_post بزنین ایجاد متاباکس کدی مشابه زیر هست add_action( 'add_meta_boxes', 'add_post_meta_boxes' ); function add_post_meta_boxes() { add_meta_box( 'wp_parsi-post-class', // Unique ID 'Post Class', // Title 'wp_parsi_post_meta_box', // Callback function 'post', // Admin page (or post type) 'side', // Context 'default' // Priority ); } function wp_parsi_post_meta_box( $post ) { ?> <p> <label>Add a custom CSS class, which will be applied to WordPress' post class.</label> <br /> <input type="text" name="parsi-post-class" value="<?php echo esc_attr( get_post_meta( $post->ID, 'parsi_post_class', true ) ); ?>" /> </p> <?php } برای ذخیره متاباکس add_action( 'save_post', 'parsi_save_post_meta', 10, 2 ); function smashing_save_post_class_meta( $post_id, $post ) { /* Verify the nonce before proceeding. */ if ( !isset( $_POST['parsi-post-class'] )) return $post_id; update_post_meta( $post_id, 'parsi_post_class', $_POST['parsi-post-class'] ); }
  17. از متد get_row یا get_var استفاده کنید $ret = $wpdb->get_var("select id from table where link='xXx'"); if(empty($ret)) echo 'not found'; else echo 'found'; جای table اسم جدول و جای xXx مقدار مورد نظر رو قرار بدید
  18. در ادرس قالب جاریتون مثلا اگه اسم قالبتون parsi باشه به این صورت میشه wp-content/themes/parsi/index.php
  19. در تنظیمات افزونه پارسی دیت گزینه هایی برای فعال و غیر فعال کردن تمامی تغییرات از اعداد و تاریخ ها هست کافیه در حالت انگلیسی تیک این تنظیمات رو روی غیرفعال قرار بدید
  20. در تکمیل صحبتهای sir1 عزیز بعضی از سرورها هم ویرایش فایلهای htaccess رو میبندن با سرور هم یه تماس بگیرید بد نیست
  21. برای تبدیل اینجور قالبها شما باید به توابع وردپرس ، css و jquery و بعضی فریمورکها اشنایی کامل داشته باشید.
  22. شما میتونین از کدی مشابه زیر استفاده کنید select * from wp_posts where id in (select object_id as id from wp_term_relationships tr join wp_term_taxonomy tt on tt.term_taxonomy_id=tr.term_taxonomy_id and term_id=1) این کد لیست تمام پستهای دیته بندی با ایدی 1 رو میاره کافیه جای * select در ابتدای کوئری delete قرار بدین و بجای term_id= 1 ایدی دسته مورد نظر خودتونو قرار بدید و در phpmyadmin اجرا کنید (قبلش از جدول پستون یه بکاپ بگیرید)
  23. در html5 خاصیتی اضافه شده بنام form با این خاصیت نیاز نیست المانی حتما داخل فورم باشه بلکه المان رو ارجاع میده به فورم مورد نظر که با اون ارسال بشه https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_input_form این مثال رو ببینید کارتون راه می افته
  24. میتونین از افزونه Better WP Security استفاده کنین یا پلاگینهای امنیتی که قابلیت Limit Login Attempts دارن علاوه بر اون میتونین پلاگین کپچا هم نصب کنین
  25. از cronjob سرور استفاده کنید http://www.ir-payamak.com/وبلاگ/cron-job-in-directadmin.html