1. default current timestamp
`publish_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
2. alter table add column
ALTER TABLE users ADD column verify_token varchar(255)
3. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Category: Interview Prepartion
Laravel Notes
1. create view with specific path
ref : https://stackoverflow.com/questions/31935417/how-to-use-artisan-to-make-views-in-laravel-5-1#:~:text=Laravel%20officially%20doesn't%20have%20any%20Artisan%20cammands%20for%20views.&text=There%20is%20very%20easy%20way,using%20Laravel%20More%20Command%20Package.&text=Thank%20you.&text=%2Dr%20is%20a%20shorthand%20for,or%20shorthand%20to%20make%20resource.
- composer require theanik/laravel-more-command --dev
- php artisan make:view user/index
2. laravel create controller command
- php artisan make:controller UserController
- create controller inside subfolder
- controller codes
*******************
public function create()
{
$data['templatecategory'] = Templatecategory::active()->orderBy('title', 'ASC')->get()->toArray();
return view('admin.template.create', $data);
}
public function store(Request $request)
{
$template = new Template();
$slug = Str::slug($request->title);
sc:
$slugcount = Template::where('slug', $slug)->count();
if ($slugcount > 0) {
$slug = $slug . '-1';
goto sc;
}
/* if ($slugcount < 1)
return $slug; */
$template->title = $request->title;
$template->slug = $slug;
$template->locale = $locale;
$template->pointslug = $slug;
$template->image = $request->image;
$template->content = $request->content;
$template->category = (!empty($request->category))?json_encode($request->category):'[]';
$template->meta_description = $request->meta_description;
$template->meta_keywords = $request->meta_keywords;
$template->analytics = $request->analytics;
$template->status = $request->status;
$template->save();
}
*******************
3. route
- Route::get('/loaddesign', [App\Http\Controllers\Admin\AdminController::class, 'loaddesign']);
4. form gallery input
- copy below code
**************************
...
<div class="form-group">
@include('admin.gallery.inc.mediainput',['name'=>'image','sizemessage'=>'600 x 400'])
</div>
..
@include('admin.gallery.inc.gallerymodal')
..
@include('admin.gallery.inc.mediascript',['name'=>'image'])
***************************
- for edit
**************
@include('admin.gallery.inc.mediainput',['name'=>'image','edit'=>true,'sizemessage'=>'600 x 400','value'=>$form['image']])
**************
5. include tinyscripts
- copy below code
************************
<div class="form-group">
<label for="content">Content</label>
<textarea class="form-control tinyarea required" id="content" name="content"
placeholder="Enter Content" data-empty="Enter Content"></textarea>
</div>
6. laravel make model command
- php artisan make:model Models/ModelName
7. migrartion creation command
- php artisan make:migration create_users_table --path=/path/to/your/migration/directory
- php artisan migrate --path=database\migrations\form\2023_09_20_181502_create_form_table.php
- migration code
**********************
Schema::create('form', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('image');
$table->string('slug');
$table->string('email');
$table->text('content')->nullable();
$table->string('file');
$table->timestamps();
});
***********************
8. File upload code
- copy below code
******************
if ($request->hasFile('file')) {
// Let's do everything here
if ($request->file('file')->isValid()) {
//
$file = $request->file('file');
$filename = ($request->name != '') ? $request->name : time();
$name = $filename . '.' . $file->getClientOriginalExtension();
$destinationPath = public_path('/formfile');
$file->move($destinationPath, $name);
$template->file = $name;
}
}
******************
9. slug code
- copy below code
*******************
use Illuminate\Support\Str;
....
$slug = Str::slug($request->title);
sc:
$slugcount = Form::where('slug', $slug)->count();
if ($slugcount > 0) {
$slug = $slug . '-1';
goto sc;
}
*****************
10. message alert
- copy below code
*******************
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if(session()->has('message.level'))
<div class="alert {{ session('message.level') }}">
{!! session('message.content') !!}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
@endif
****************
11. laravel mail
ref : https://laravel.com/docs/8.x/mail
https://www.itsolutionstuff.com/post/laravel-10-mail-laravel-10-send-mail-tutorialexample.html
- php artisan make:mail OrderShipped
- use below code
*******************
public $mailData;
public function __construct($mailData)
{
$this->mailData = $mailData;
}
...
public function build()
{
return $this->from('example@example.com', 'Example')
->view('emails.orders.shipped',$this->mailData);
}
- in mail controller code
***************
use Mail;
use App\Mail\FormEmail;
...
Mail::to('ramkankannan@gmail.com')->send(new FormEmail($mailData));
*******************
12. pagination
- in controller
*******************
$data['form'] = Form::paginate(3);
*******************
- in view
******************
{{$form->appends(request()->input())->links('pagination.admin')}}
******************
Pagination in Codeigniter
Add below code in controller
<?php
$data["newstotal"] = $this->news_model->list();
// print_r($data['newstotal']);
//pagination
$rec_limit = 2;
$total_page = ceil(count($data["newstotal"]) / $rec_limit);
if (isset($_GET["page"])) {
$page = $_GET["page"];
$pageoff = $page - 1;
$offset = $rec_limit * $pageoff;
} else {
$page = 1;
$offset = 0;
}
$data["news"] = $this->news_model->list($offset, $rec_limit);
?>
Add below code in view
<?php
//$current_page = ($offset / 2) + 1;
echo "<div class='paging text-center'>";
echo "<a href = \"?page=1\" class='btn btn-default'><<</a>";
for ($p = 5; $p > 1; $p--) {
$prev = $current_page + 1 - $p;
if ($prev > 0) {
echo "<a href = \"?page=$prev\" class='btn btn-default'>$prev</a>";
}
}
echo "<a href = \"?page=$current_page\" class='btn btn-primary'>$current_page</a>";
for ($p = 1; $p < 5; $p++) {
$next = $current_page + $p;
if ($next <= $total_page) {
echo "<a href = \"?page=$next\" class='btn btn-default'>$next</a>";
}
}
echo "<a href = \"?page=$total_page\" class='btn btn-default'>>></a>";
echo "</div>";
?>
In model
public function list($offset=null,$limit=null){
$this->db->select('*');
$this->db->from('news');
$this->db->order_by('created_at','desc');
if($offset!==null)
{
$this->db->limit($limit,$offset);
}
//$this->db->where($field, $value);
$query = $this->db->get();
if ($query->num_rows() > 0) {
$row = $query->result_array();
return $row;
} else {
return [];
}
}
AJAX Pagination
$('body').on('click','.ajaxpagination .paging .btn',function(e){
e.preventDefault();
var dataurl = $(this).attr('href');
var search = $('#templatesearch [name="search"]').val();
if (typeof dataurl !== 'undefined' && dataurl !== false) {
var result = $.ajax({
data: {'search':search},
url: dataurl,
type: "GET",
datatype: "html",
success: function(data) {
$('#designModal .modal-body').html(data);
},
error: function(xhr, status, error) {
}
});
}
});
WordPress Notes
1. Enque css and js
- copy below code
***********************
add_action( 'wp_enqueue_scripts', 'add_frontend_css' );
function add_frontend_css() {
//css
wp_enqueue_style( 'bootstrap', get_template_directory_uri() . '/frontend/css/bootstrap.min.css', false, '1.1', 'all');
wp_enqueue_style( 'font', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css', false, '1.1', 'all');
wp_enqueue_style( 'tinyslider', get_template_directory_uri() . '/frontend/css/tiny-slider.css', false, '1.1', 'all');
wp_enqueue_style( 'frontendstyle', get_template_directory_uri() . '/frontend/css/style.css', false, '1.1', 'all');
//js
/* wp_enqueue_script( 'bootstrap', get_template_directory_uri() . '/frontend/js/bootstrap.bundle.min.js', array( 'jquery' ));
wp_enqueue_script( 'tinyslider', get_template_directory_uri() . '/frontend/js/tiny-slider.js', array( 'jquery' ));
wp_enqueue_script( 'custom', get_template_directory_uri() . '/frontend/js/custom.js', array( 'jquery' )); */
}
/**************** */
- add script at footer
- footer.php
****************
?php%20site_url();%20?/wp-content/themes/mytheme/frontend/js/bootstrap.bundle.min.js
*****************
2. Menu
- Install menudesign plugin
- add menu class sample
- in menuid
- menu1 //it is id of menu #menu1
- in menu class
- .menu-item-has-children //it is class of element . important need to add space as first letter
- in menu add class
- custom-navbar-nav navbar-nav ms-auto mb-2 mb-md-0
- frontend code
******************
<?php echo do_shortcode("[mymenu location='primary' menuid='menu1']"); ?>
*******************
3. Plugins Needed for Interview
- bootstrap
- menudesign
- misha image upload
- addwidget
- custom post
- mytheme Theme
- Third party plugins
- contactform 7
- additional header
- Reply-To: [your-email]
- from
- [_site_title] [your-email]
- Contact Form Entries
- Post SMTP
4. Create admin page and form
- Add admin menu code
/*****Add Main Menu with Seperate Page Script***/
add_action( 'admin_menu', 'my_form' );
function my_form() {
add_menu_page( 'Theme Options', 'My Form', 'manage_options', 'theme-options-form-element', 'theme_general_form', 'dashicons-admin-generic', 6 );
}
/*******End Script**********/
/************Admin Page Script***********/
function theme_general_form(){
?>
<form method="post" action="options.php">
<?php wp_nonce_field('update-options') ?>
<h1>Menu Element</h1>
<div class="panel panel-default">
<div class="panel-body">
<div class="well">
<table id="menuelementpolicyTable" class="table menuelementpolicyorder-list">
<thead>
<tr>
<td>Menuid</td>
</tr>
</thead>
<tbody>
<tr>
<td class="col-sm-4">
<label for="">Form Title</label>
<input required type="text" name="formtitle" class="form-control new-option" value="<?php echo get_option('formtitle');?>"/>
<label for="">Content</label>
<?php
/***********wysiwyg editor script******************/
$settings = array( 'media_buttons' => true,'quicktags' => true );
$content =get_option( 'formcontent' );
$editor_id = 'formcontent';
wp_editor( $content, $editor_id,$settings );
/******End Script********/
?>
<label for="">Image</label>
<?php echo misha_image_uploader_field('formimage',get_option('formimage'),'back') ?>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p><input required type="submit" class="checkoptionsubmit" name="Submit" value="Save" /></p>
<input required type="hidden" name="action" value="update" />
<input required type="hidden" name="page_options" value="formtitle,formcontent,formimage" />
</form>
<?php
}
******************
5. misha imagae
- install misha image plugin
- backend code
- use front for frontend
*******************
<?php echo misha_image_uploader_field('formimage',get_option('formimage'),'back') ?>
*******************
- get misha image url
*******************
<?php
$image_attributes = wp_get_attachment_image_src( get_option('formimage'), 'full' );
?>
<img src="<?php echo $image_attributes[0];?>" class="img-responsive" style="display:block;" />
********************
6. Widgets
- install addwidget plugin
- widget name can include space eg : Footer One and call in code without space eg: dynamic_sidebar( 'footerone' );
- Footer widget code
***********************
<?php if ( is_active_sidebar( 'first' ) ) : ?>
<div class="col-lg-4">
<?php dynamic_sidebar( 'first' ); ?>
</div>
<?php endif; ?>
************************
7. Custom Post
- install custom post plugin
- featured image enable
********************
add_theme_support( 'post-thumbnails', array( 'post', 'page', 'post_type') );
*******************
- get featured image url
*******************
<?php echo get_the_post_thumbnail_url(get_the_ID(),'medium');?>
********************
- get custom field
******************
<?php echo get_post_meta( get_the_ID(), 'sub_title', true);?>
******************
- frontend listing
******************
<?php $loop = new WP_Query( array( 'post_type' => 'my_testimonialcustom', 'posts_per_page' => 10 ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php the_title()?>
<?php the_content(); ?>
<?php endwhile; ?>
*******************
8. Archive page with pagination
- wp query listing
*******************
<?php
$myQuery = new WP_Query();
$cars = $myQuery->query([
'post_type' => 'my_testimonialcustom',
'posts_per_page' => 1,
'paged' => !empty($_GET['pg']) ? absint($_GET['pg']) : 1,
]);
foreach ($cars as $car) {
echo $car->post_title;
}
echo myPaginateLinks($myQuery);
?>
*********************
- functions.php add myPaginateLinks function
***********************
function myPaginateLinks( WP_Query $wp_query, $args = '' ) {
global $wp_rewrite;
// Setting up default values based on the current URL.
$pagenum_link = html_entity_decode( get_pagenum_link() );
$url_parts = explode( '?', $pagenum_link );
// Get max pages and current page out of the current query, if available.
$total = isset( $wp_query->max_num_pages ) ? $wp_query->max_num_pages : 1;
$current = !empty($_GET['pg']) ? absint($_GET['pg']) : 1;
// Append the format placeholder to the base URL.
$pagenum_link = trailingslashit( $url_parts[0] ) . '%_%';
// URL base depends on permalink settings.
$format = $wp_rewrite->using_index_permalinks() && ! strpos( $pagenum_link, 'index.php' ) ? 'index.php/' : '';
$format .= '?pg=%#%';
$defaults = array(
'base' => $pagenum_link, // http://example.com/all_posts.php%_% : %_% is replaced by format (below).
'format' => $format, // ?page=%#% : %#% is replaced by the page number.
'total' => $total,
'current' => $current,
'aria_current' => 'page',
'show_all' => false,
'prev_next' => true,
'prev_text' => __( '« Previous' ),
'next_text' => __( 'Next »' ),
'end_size' => 1,
'mid_size' => 2,
'type' => 'plain',
'add_args' => array(), // Array of query args to add.
'add_fragment' => '',
'before_page_number' => '',
'after_page_number' => '',
);
$args = wp_parse_args( $args, $defaults );
if ( ! is_array( $args['add_args'] ) ) {
$args['add_args'] = array();
}
// Merge additional query vars found in the original URL into 'add_args' array.
if ( isset( $url_parts[1] ) ) {
// Find the format argument.
$format = explode( '?', str_replace( '%_%', $args['format'], $args['base'] ) );
$format_query = isset( $format[1] ) ? $format[1] : '';
wp_parse_str( $format_query, $format_args );
// Find the query args of the requested URL.
wp_parse_str( $url_parts[1], $url_query_args );
// Remove the format argument from the array of query arguments, to avoid overwriting custom format.
foreach ( $format_args as $format_arg => $format_arg_value ) {
unset( $url_query_args[ $format_arg ] );
}
$args['add_args'] = array_merge( $args['add_args'], urlencode_deep( $url_query_args ) );
}
// Who knows what else people pass in $args.
$total = (int) $args['total'];
if ( $total < 2 ) {
return;
}
$current = (int) $args['current'];
$end_size = (int) $args['end_size']; // Out of bounds? Make it the default.
if ( $end_size < 1 ) {
$end_size = 1;
}
$mid_size = (int) $args['mid_size'];
if ( $mid_size < 0 ) {
$mid_size = 2;
}
$add_args = $args['add_args'];
$r = '';
$page_links = array();
$dots = false;
if ( $args['prev_next'] && $current && 1 < $current ) :
$link = str_replace( '%_%', 2 == $current ? '' : $args['format'], $args['base'] );
$link = str_replace( '%#%', $current - 1, $link );
if ( $add_args ) {
$link = add_query_arg( $add_args, $link );
}
$link .= $args['add_fragment'];
$page_links[] = sprintf(
'<a class="prev page-numbers" href="%s">%s</a>',
/**
* Filters the paginated links for the given archive pages.
*
* @since 3.0.0
*
* @param string $link The paginated link URL.
*/
esc_url( apply_filters( 'paginate_links', $link ) ),
$args['prev_text']
);
endif;
for ( $n = 1; $n <= $total; $n++ ) :
if ( $n == $current ) :
$page_links[] = sprintf(
'<span aria-current="%s" class="page-numbers current">%s</span>',
esc_attr( $args['aria_current'] ),
$args['before_page_number'] . number_format_i18n( $n ) . $args['after_page_number']
);
$dots = true;
else :
if ( $args['show_all'] || ( $n <= $end_size || ( $current && $n >= $current - $mid_size && $n <= $current + $mid_size ) || $n > $total - $end_size ) ) :
$link = str_replace( '%_%', 1 == $n ? '' : $args['format'], $args['base'] );
$link = str_replace( '%#%', $n, $link );
if ( $add_args ) {
$link = add_query_arg( $add_args, $link );
}
$link .= $args['add_fragment'];
$page_links[] = sprintf(
'<a class="page-numbers" href="%s">%s</a>',
/** This filter is documented in wp-includes/general-template.php */
esc_url( apply_filters( 'paginate_links', $link ) ),
$args['before_page_number'] . number_format_i18n( $n ) . $args['after_page_number']
);
$dots = true;
elseif ( $dots && ! $args['show_all'] ) :
$page_links[] = '<span class="page-numbers dots">' . __( '…' ) . '</span>';
$dots = false;
endif;
endif;
endfor;
if ( $args['prev_next'] && $current && $current < $total ) :
$link = str_replace( '%_%', $args['format'], $args['base'] );
$link = str_replace( '%#%', $current + 1, $link );
if ( $add_args ) {
$link = add_query_arg( $add_args, $link );
}
$link .= $args['add_fragment'];
$page_links[] = sprintf(
'<a class="next page-numbers" href="%s">%s</a>',
/** This filter is documented in wp-includes/general-template.php */
esc_url( apply_filters( 'paginate_links', $link ) ),
$args['next_text']
);
endif;
switch ( $args['type'] ) {
case 'array':
return $page_links;
case 'list':
$r .= "<ul class='page-numbers'>\n\t<li>";
$r .= implode( "</li>\n\t<li>", $page_links );
$r .= "</li>\n</ul>\n";
break;
default:
$r = implode( "\n", $page_links );
break;
}
/**
* Filters the HTML output of paginated links for archives.
*
* @since 5.7.0
*
* @param string $r HTML output.
* @param array $args An array of arguments. See paginate_links()
* for information on accepted arguments.
*/
$r = apply_filters( 'paginate_links_output', $r, $args );
return $r;
}
************************
Laravel Codes
laravel installation
======================
1. composer create-project laravel/laravel foldername –-prefer-dist
- configure db .env
- configure mail
****************
MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=587
MAIL_USERNAME=fc05f90273aa3a
MAIL_PASSWORD=27076f56b78697
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=ramkankannan@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
******************
2. specifiefd key too long error
/app/Providers/AppServiceProvider.php
******************
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
****************
3. php artisan migrate
4. composer require laravel/ui
5. php artisan ui bootstrap --auth
6. run "npm install && npm run dev"
7. email veirification
ref : https://mailtrap.io/blog/laravel-email-verification/
- add implements MustVerifyEmail in user.php
- add below code in routes
*********************************
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\EmailVerificationRequest;
Route::get('/email/verify', function () {
return view('auth.verify-email');
})->middleware('auth')->name('verification.notice');
Route::get('/email/verify/{id}/{hash}', function (EmailVerificationRequest $request) {
$request->fulfill();
return redirect('/home');
})->middleware(['auth', 'signed'])->name('verification.verify');
Route::post('/email/verification-notification', function (Request $request) {
$request->user()->sendEmailVerificationNotification();
return back()->with('message', 'Verification link sent!');
})->middleware(['auth', 'throttle:6,1'])->name('verification.send');
****************************************
8. User roles module
ref : https://spatie.be/docs/laravel-permission/v5/installation-laravel
- composer require spatie/laravel-permission
- add below in config/app.php
***************************
'providers' => [
// ...
Spatie\Permission\PermissionServiceProvider::class,
//...
'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
];
****************************
- php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
- php artisan config:clear
- php artisan migrate
if specified key too long issue came
modity config\database.php
*****************
'mysql' => [
.
'engine' => 'InnoDB ROW_FORMAT=DYNAMIC',
.
]
*******************
- copy app/Http/Controllers/Admin/User folder
- copy resources\views\admin\user
- add below code in app\Models\User.php
*******************
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable implements MustVerifyEmail
{
use HasRoles;
*******************
- copy resources\views\admin\layouts
- copy resources\views\admin\permission
- copy resources\views\admin\role
- copy resources\views\pagination
- copy resources\views\admin\inc
- copy below folder for css
- public\assets
- copy resources\views\auth\verify-email.blade.php
- copy seo module
- add below code in web.php
***********************
//permission
Route::prefix('admin')->group(function () {
// Route::group(['middleware' => ['role:Admin']], function () {
Route::prefix('user')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\User\UserController::class, 'index']);
Route::get('/view/{user}', [App\Http\Controllers\Admin\User\UserController::class, 'show']);
Route::get('/assignpermission/{user}', [App\Http\Controllers\Admin\User\UserController::class, 'assignpermission']);
Route::get('/assignpermissionadd/{user}/{permission}', [App\Http\Controllers\Admin\User\UserController::class, 'assignpermissionadd']);
Route::get('/assignpermissionrevoke/{user}/{permission}', [App\Http\Controllers\Admin\User\UserController::class, 'assignpermissionrevoke']);
Route::get('/assignrole/{user}', [App\Http\Controllers\Admin\User\UserController::class, 'assignrole']);
Route::get('/assignroleadd/{user}/{role}', [App\Http\Controllers\Admin\User\UserController::class, 'assignroleadd']);
Route::get('/assignrolerevoke/{user}/{role}', [App\Http\Controllers\Admin\User\UserController::class, 'assignrolerevoke']);
});
Route::prefix('role')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\User\RoleController::class, 'index']);
Route::get('/create', [App\Http\Controllers\Admin\User\RoleController::class, 'create']);
Route::get('/assignpermission/{role}', [App\Http\Controllers\Admin\User\RoleController::class, 'assignpermission']);
Route::get('/assignpermissionadd/{role}/{permission}', [App\Http\Controllers\Admin\User\RoleController::class, 'assignpermissionadd']);
Route::get('/assignpermissionrevoke/{role}/{permission}', [App\Http\Controllers\Admin\User\RoleController::class, 'assignpermissionrevoke']);
Route::post('/', [App\Http\Controllers\Admin\User\RoleController::class, 'store']);
Route::get('/delete/{id}', [App\Http\Controllers\Admin\User\RoleController::class, 'destroy']);
});
Route::prefix('permission')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\User\PermissionController::class, 'index']);
Route::get('/create', [App\Http\Controllers\Admin\User\PermissionController::class, 'create']);
Route::get('/assignrole/{permission}', [App\Http\Controllers\Admin\User\PermissionController::class, 'assignrole']);
Route::get('/assignroleadd/{permission}/{role}', [App\Http\Controllers\Admin\User\PermissionController::class, 'assignroleadd']);
Route::get('/assignrolerevoke/{permission}/{role}', [App\Http\Controllers\Admin\User\PermissionController::class, 'assignrolerevoke']);
Route::post('/', [App\Http\Controllers\Admin\User\PermissionController::class, 'store']);
Route::get('/delete/{id}', [App\Http\Controllers\Admin\User\PermissionController::class, 'destroy']);
});
});
// });
*****************************
9. Gallery Module
- copy app\Http\Controllers\Admin\Gallery
- copy app\Models\Gallery
- copy database\migrations\gallery
- run migrtion specifically
- php artisan migrate --path=/database/migrations/full_migration_file_name_migration.php
- copy resources\views\admin\gallery
- copy public\js\admincustom.js
- copy public\js\gallery.js
- copy public\css\admincustom.css
- copy below code in routes
******************************************
//gallery
// Route::group(['middleware' => ['can:Gallery']], function () {
Route::prefix('gallery')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'index']);
Route::post('/categorysuggestion', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'categorysuggestion']);
Route::get('/categorysuggestion', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'categorysuggestion']);
Route::get('/ajaxload', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'ajaxload']);
Route::get('/create', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'create']);
Route::get('/popup', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'popup']);
Route::post('/add', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'store']);
Route::post('/addcategory', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'storecategory']);
Route::get('/ajaxloadcategory', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'ajaxloadcategory']);
Route::get('/category', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'category']);
Route::get('/category/add', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'addcategory']);
// Route::post('/category/store', 'GalleryController@storecategory');
Route::get('/category/delete/{id}', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'deletecategory']);
Route::get('/delete/{id}', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'destroy']);
Route::get('/ajaxinput', [App\Http\Controllers\Admin\Gallery\GalleryController::class, 'ajaxinput']);
});
// });
*******************************************
10. Templates MOdule
- copy app\Http\Controllers\Admin\Template
- copy app\Models\Template
- copy database\migrations\template
- run migrations
- copy resources\views\admin\template
- copy resources\views\admin\design
- copy public\tinymce
edit css linlks for templtes css
- css link live and working urls
- add below code in routes
***********************************
//template
//Route::group(['middleware' => ['can:Template', 'setlocale']], function () {
// Route::get('drafttemplate/{slug}', [App\Http\Controllers\Admin\Template\DraftTemplateController::class,'view'])->middleware('setlocale');
Route::prefix('template')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\Template\TemplateController::class, 'index']);
Route::get('/add', [App\Http\Controllers\Admin\Template\TemplateController::class, 'create']);
Route::post('/store', [App\Http\Controllers\Admin\Template\TemplateController::class, 'store']);
Route::post('/update', [App\Http\Controllers\Admin\Template\TemplateController::class, 'update']);
Route::get('/edit/{pointslug}', [App\Http\Controllers\Admin\Template\TemplateController::class, 'edit']);
Route::get('/delete/{id}', [App\Http\Controllers\Admin\Template\TemplateController::class, 'destroy']);
Route::get('/sectiondelete/{id}', [App\Http\Controllers\Admin\Template\TemplateController::class, 'destroysection']);
Route::get('/loaddesign', [App\Http\Controllers\Admin\Template\TemplateController::class, 'loaddesign']);
});
Route::prefix('drafttemplate')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\Template\DraftTemplateController::class, 'index']);
Route::get('/add', [App\Http\Controllers\Admin\Template\DraftTemplateController::class, 'create']);
Route::post('/store', [App\Http\Controllers\Admin\Template\DraftTemplateController::class, 'store']);
Route::post('/update', [App\Http\Controllers\Admin\Template\DraftTemplateController::class, 'update']);
Route::get('/edit/{pointslug}', [App\Http\Controllers\Admin\Template\DraftTemplateController::class, 'edit']);
Route::get('/delete/{id}', [App\Http\Controllers\Admin\Template\DraftTemplateController::class, 'destroy']);
Route::get('/sectiondelete/{id}', [App\Http\Controllers\Admin\Template\DraftTemplateController::class, 'destroysection']);
});
Route::prefix('templatecategory')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\Template\TemplateController::class, 'categoryindex']);
Route::get('/add', [App\Http\Controllers\Admin\Template\TemplateController::class, 'categorycreate']);
Route::post('/store', [App\Http\Controllers\Admin\Template\TemplateController::class, 'categorystore']);
Route::post('/update', [App\Http\Controllers\Admin\Template\TemplateController::class, 'categoryupdate']);
Route::get('/edit/{id}', [App\Http\Controllers\Admin\Template\TemplateController::class, 'categoryedit']);
Route::get('/delete/{id}', [App\Http\Controllers\Admin\Template\TemplateController::class, 'categorydestroy']);
});
//});
***********************
- copy below codes in routes
*********************************
//load design
Route::get('/loaddesign', [App\Http\Controllers\Admin\AdminController::class, 'loaddesign']);
Route::get('/loadeledesign', [App\Http\Controllers\Admin\AdminController::class, 'loadeledesign']);
***************************************
- copy Controllers\Admin\AdminController
- copy below code in routes
******************************
Route::get('/setsession/{name}/{value}', [App\Http\Controllers\HomeController::class, 'setSession'])->name('setsession');
*********************************
- copy below code app\Http\Controllers\HomeController3.php
****************************************
public function setSession($name, $value)
{
session([$name => $value]);
}
**********************************
11. Design Module
- copy app\Http\Controllers\Admin\Design
- copy app\Models\Design
- copy database\migrations\design
- run migrations
- copy resources\views\admin\design
- copy below codes in routes
*****************************************************
//design
// Route::group(['middleware' => ['can:Design', 'setlocale']], function () {
// Route::get('draftdesign/{slug}', [App\Http\Controllers\Admin\Design\DraftDesignController::class,'view'])->middleware('setlocale');
Route::prefix('design')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\Design\DesignController::class, 'index']);
Route::get('/add', [App\Http\Controllers\Admin\Design\DesignController::class, 'create']);
Route::post('/store', [App\Http\Controllers\Admin\Design\DesignController::class, 'store']);
Route::post('/update', [App\Http\Controllers\Admin\Design\DesignController::class, 'update']);
Route::get('/edit/{pointslug}', [App\Http\Controllers\Admin\Design\DesignController::class, 'edit']);
Route::get('/delete/{id}', [App\Http\Controllers\Admin\Design\DesignController::class, 'destroy']);
Route::get('/sectiondelete/{id}', [App\Http\Controllers\Admin\Design\DesignController::class, 'destroysection']);
Route::get('/loaddesign', [App\Http\Controllers\Admin\Design\DesignController::class, 'loaddesign']);
});
Route::prefix('draftdesign')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\Design\DraftDesignController::class, 'index']);
Route::get('/add', [App\Http\Controllers\Admin\Design\DraftDesignController::class, 'create']);
Route::post('/store', [App\Http\Controllers\Admin\Design\DraftDesignController::class, 'store']);
Route::post('/update', [App\Http\Controllers\Admin\Design\DraftDesignController::class, 'update']);
Route::get('/edit/{pointslug}', [App\Http\Controllers\Admin\Design\DraftDesignController::class, 'edit']);
Route::get('/delete/{id}', [App\Http\Controllers\Admin\Design\DraftDesignController::class, 'destroy']);
Route::get('/sectiondelete/{id}', [App\Http\Controllers\Admin\Design\DraftDesignController::class, 'destroysection']);
});
Route::prefix('designcategory')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\Design\DesignController::class, 'categoryindex']);
Route::get('/add', [App\Http\Controllers\Admin\Design\DesignController::class, 'categorycreate']);
Route::post('/store', [App\Http\Controllers\Admin\Design\DesignController::class, 'categorystore']);
Route::post('/update', [App\Http\Controllers\Admin\Design\DesignController::class, 'categoryupdate']);
Route::get('/edit/{id}', [App\Http\Controllers\Admin\Design\DesignController::class, 'categoryedit']);
Route::get('/delete/{id}', [App\Http\Controllers\Admin\Design\DesignController::class, 'categorydestroy']);
});
// });
***********************************
12. Promotions Module
- copy app\Http\Controllers\Admin\Promotions
- copy app\Models\Promotions
- copy database\migrations\promotions
- copy resources\views\admin\promotions
- copy config\promotions.php
- copy seo module
- copy below code in app\Providers\AppServiceProvider.php
*************************
use Illuminate\Support\Facades\App;
public function boot()
{
if(isset($_GET['lang']))
{
$locale = $_GET['lang'];
}
else{
$locale='en';
}
view()->share('locale', $locale);
App::setLocale($locale);
************************************
- copy below code in routes
**********************************
//promotions
//Route::group(['middleware' => ['can:Promotions', 'setlocale']], function () {
// Route::get('draftpromotions/{slug}', [App\Http\Controllers\Admin\Promotions\DraftPromotionsController::class,'view'])->middleware('setlocale');
Route::prefix('promotions')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'index']);
Route::get('/add', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'create']);
Route::post('/store', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'store']);
Route::post('/update', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'update']);
Route::get('/edit/{pointslug}', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'edit']);
Route::get('/delete/{id}', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'destroy']);
Route::get('/sectiondelete/{id}', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'destroysection']);
Route::get('/loaddesign', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'loaddesign']);
});
Route::prefix('draftpromotions')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\Promotions\DraftPromotionsController::class, 'index']);
Route::get('/add', [App\Http\Controllers\Admin\Promotions\DraftPromotionsController::class, 'create']);
Route::post('/store', [App\Http\Controllers\Admin\Promotions\DraftPromotionsController::class, 'store']);
Route::post('/update', [App\Http\Controllers\Admin\Promotions\DraftPromotionsController::class, 'update']);
Route::get('/edit/{pointslug}', [App\Http\Controllers\Admin\Promotions\DraftPromotionsController::class, 'edit']);
Route::get('/delete/{id}', [App\Http\Controllers\Admin\Promotions\DraftPromotionsController::class, 'destroy']);
Route::get('/sectiondelete/{id}', [App\Http\Controllers\Admin\Promotions\DraftPromotionsController::class, 'destroysection']);
});
Route::prefix('promotionscategory')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'categoryindex']);
Route::get('/add', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'categorycreate']);
Route::post('/store', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'categorystore']);
Route::post('/update', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'categoryupdate']);
Route::get('/edit/{id}', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'categoryedit']);
Route::get('/delete/{id}', [App\Http\Controllers\Admin\Promotions\PromotionsController::class, 'categorydestroy']);
});
//});
**************************
- promotion frontend controller code
***********************************
use App\Models\Promotions\Promotions;
public function promotions()
{
$locale = app()->getLocale();
$slug = 'promotions';
$promotions = Promotions::where('locale', $locale)->where('status', '1')->whereDate('publish_on', '<=', date('Y-m-d'))->orderBy('publish_on', 'DESC')->paginate(10);
$data['promotions'] = $promotions;
return view('promotions', $data);
}
*************************
- promotion frontend view code
**************************
<section id="promoPage">
<div class="container">
<div class="row">
@foreach($promotions as $k => $v)
<div class="col-12 col-md-6 mb-5">
<a href="{{URL('promotions/'.$v['slug'])}}">
<div class="imgBox">
<?php $image = explode('|',$v['image']);?>
<img src="{{URL('gallery/'.$image[0])}}" alt="{{$image[1] ?? $v['title']}}" width="100%" height="auto">
</div>
<h2 class="promoHead">{{$v['title']}}</h2>
</a>
</div>
@endforeach
</div>
<div class="row d-none">
<div class="col-12 d-flex justify-content-center mt-5">
{{$promotions->links('pagination.default')}}
</div>
</div>
</div>
</section>
*******************
- promtions frontend slug view controller code
******************************
public function show($slug): View
{
$locale = app()->getLocale();
//promotion
$promotions = Promotions::with('sections')->where('locale', $locale)->where('status', '1')->where('slug', $slug)->whereDate('publish_on', '<=', date('Y-m-d'))->orderBy('publish_on', 'DESC')->first();
if (empty($promotions)) {
abort(404);
}
$promotionssections = $promotions['sections']->groupBy('type');
$data['promotions'] = $promotions;
$data['promotionssections'] = $promotionssections;
if (!empty($promotions) && config('promotions.section.' . $slug)) {
foreach (config('promotions.section.' . $slug) as $k => $v) {
$promotionssections[$k] = PromotionsSection::with('children')->where('promotions_id', $promotions->id)->where('type', $k)->orderBy('order', 'ASC')->get()->toArray();
}
}
return view('frontend.show',$data);
}
**************************
- promotions frontend slug view blade
***************************
<section class="page-section" id="about">
<div class="container">
<div class="text-center">
<h2 class="section-heading text-uppercase">{{$promotions['title']}}</h2>
<h3 class="section-subheading text-muted">{{date('F d, Y',strtotime($promotions['publish_on']))}}</h3>
</div>
@if(!empty($promotions['image']))
<?php $image = explode('|',$promotions['image']);?>
<div class="timeline-image"><img class="rounded-circle img-fluid" src="{{URL('gallery/'.$image[0])}}" alt="..." /></div>
@endif
@if(isset($promotionssections['content']))
@foreach($promotionssections['content'] as $k => $v)
<?php
$scontent = json_decode($v['content'],true);
?>
{!! $scontent['content'] !!}
@endforeach
@endif
</div>
</section>
**************************
13. Seo MOdule
- copy database\migrations\seo
- copy app\Models\Seo
14. Menu Module
- copy app\Http\Controllers\Admin\Menu
- copy app\Models\Menu\Menu.php
- copy resources\views\admin\menu
- copy database\migrations\menu
- copy public\menu
- copy below code in routes
*******************
//Route::group(['middleware' => ['can:Menu']], function () {
Route::prefix('menu')->group(function () {
Route::get('/', [App\Http\Controllers\Admin\Menu\MenuController::class, 'create']);
Route::post('/store', [App\Http\Controllers\Admin\Menu\MenuController::class, 'store'])->name('menu.store');
});
//});
********************
- call menu in frontend
include below code
***********************
$locale = app()->getLocale();
$url =\URL::current();
$menulang = ($locale=='en')?'':'_'.$locale;
$headermenu = \App\Models\Menu\Menu::where('title', 'main'.$menulang)->first();
$headermenuar = (!empty($headermenu))?json_decode($headermenu->content,true):[];
@foreach($headermenuar as $mk => $mv)
<?php
$menuactive = '';
if(isset($mv['children'])){
$menuchildrenar = collect($mv['children'])->pluck('href')->toArray();
if (in_array($url, $menuchildrenar))
$menuactive = 'active';
}
else if($mv['href']==$url){
$menuactive = 'active';
}
?>
<li class="nav-item @if(isset($mv['children'])) dropdown megaMenu @endif {{$menuactive}}">
<a class="nav-link @if(isset($mv['children'])) dropdown-toggle @endif" href="{{$mv['href']}}" id="navbarDropdown{{$mk}}" @if(isset($mv['children'])) role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" @endif target="{{$mv['target']}}">{{$mv['text']}}</a>
@if(isset($mv['children']))
<i class="icon-right-arrow mobDwnIcon d-lg-none"></i>
<div class="dropdown-menu" aria-labelledby="navbarDropdown{{$mk}}">
@foreach($mv['children'] as $ck => $cv)
<?php
$activeclass = '';
if($url==$cv['href']){
$activeclass = 'active';
$breadcrumbdata = [$mv['text'] => $mv['href'], $cv['text'] => $cv['href']];
}
?>
<a class="dropdown-item {{$activeclass}}" href="{{$cv['href']}}" target="{{$mv['target']}}">{{$cv['text']}}</a>
@endforeach
</div>
@endif
</li>
@endforeach
************************************
Codeigniter 3 Codes
1. copy paste codeigiter folder
2. create database and configure application\config\database.php
3. edit config file application\config\config.php
- $config['base_url'] = 'http://localhost/learning/codeignitertwo/';
- $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-@\=';
3. edit autoload file application\config\autoload.php
- $autoload['libraries'] = array('database','session');
- $autoload['helper'] = array('url');
4. copy user files and user table
- application\controllers\User.php
- application\controllers\MController.php
- this file is common file for using common functions like send mail file upload
- application\models\User_model.php
- application\views\user
- user table query
*********************
CREATE TABLE `users` (
`id` int(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(100) DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`verify_token` varchar(255) DEFAULT NULL,
`active` tinyint(1) DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
)
***********************
5. copy phpmailer folder in root
6. add include files and home page for layout in view
- add frontend folder in root for design required files
- add link css and js
*********************
<link href="<?php echo base_url(); ?>/frontend/css/tiny-slider.css" rel="stylesheet">
<script src="<?php echo base_url(); ?>/frontend/js/scripts.js"></script>
********************
- welcome controller home functions
********************
public function home()
{
if($this->session->userdata('useremail')){
$this->load->view('includes/header');
$this->load->view('welcome_message');
$this->load->view('includes/footer');
}
else{
redirect('user/login');
}
}
*********************
7. copy admin files and admin table
- application\controllers\Admin.php
- application\models\Admin_model.php
- application\views\admin
- admin table query
*******************
CREATE TABLE `admin` (
`id` int(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(100) DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
)
*******************
8. copy news module files and news table
- application\controllers\News.php
- application\models\News_model.php
- application\views\admin\news
- news table query
******************
CREATE TABLE `news` (
`id` int(20) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`slug` varchar(255) DEFAULT NULL,
`content` varchar(255) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`image` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `slug` (`slug`)
)
********************
- create photos folder in root for image upload
9. copy gallery module files and gallery table and gallery category table
- application\controllers\Gallery.php
- application\models\Gallery_model.php
- application\views\admin\gallery
- gallery category table query
*************************
CREATE TABLE `gallery_category` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`category` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
)
*************************
- gallery table query
*************************
CREATE TABLE `gallery` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`path` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`category` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
)
**************************
- create gallery folder in root
- add input field in form
- add this code in controller
****************************
$this->load->view('admin/gallery/gallerymodal');
$this->load->view('admin/gallery/fieldscript');
$this->load->view('admin/gallery/script');
****************************
- add this code in view input field
****************************
<?php $this->view('admin/gallery/mediainput', ['name' => 'featureimage', 'class' => 'required', 'attr' =>'data-empty=Select Image', 'sizemessage' => '600 x 400']); ?>
//for edit
<?php $this->view('admin/gallery/mediainput', ['name' => 'featureimage', 'class' => 'required', 'attr' =>'data-empty=Select Image', 'sizemessage' => '600 x 400','edit'=>true,'value'=>$news['featureimage']]); ?>
****************************
10. routes
- edit application\config\routes.php
- samples
**********************
$route['admin/addnews'] = 'news/add'; //here news is controller and add is function
$route['admin/news'] = 'news/list';
**********************
- routes with parameter
*********************
$route['admin/news/edit/(:any)'] = 'news/edit/$1';
*********************
edit function pass parameter
*********************
public function edit($id)
*********************
WordPress create custom frontend form
Add this code for save custom field value
function __update_post_meta( $post_id, $field_name, $value = '' )
{
if ( empty( $value ) OR ! $value )
{
delete_post_meta( $post_id, $field_name );
}
elseif ( ! get_post_meta( $post_id, $field_name ) )
{
add_post_meta( $post_id, $field_name, $value );
}
else
{
update_post_meta( $post_id, $field_name, $value );
}
}
add this code for html form
function newletterform(){
if(isset($_POST['newslettersubmit']))
{
$id = wp_insert_post(array(
'post_title'=>$_POST['newslettername'],
'post_type'=>'my_form',
));
__update_post_meta( $id, 'customfield', $_POST['newsletteremail'] );
echo "<script>window.location.replace('".$_SERVER['HTTP_REFERER']."');</script>";
}
?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>#newsletterform" class="row g-3" id="newsletterform">
<div class="col-auto">
<input type="text" class="form-control" placeholder="Enter your name" name="newslettername">
</div>
<div class="col-auto">
<input type="email" class="form-control" placeholder="Enter your email" name="newsletteremail">
</div>
<div class="col-auto">
<input required type="hidden" name="page_options" value="newslettername, newsletteremail" />
<input type="submit" class="btn btn-primary" name="newslettersubmit">
<span class="fa fa-paper-plane"></span>
</input>
</div>
</form>
<?php
}
Register Post Type
$labels = array(
'name' => ucfirst('newsletter'),
'singular_name' => 'newsletter',
'menu_name' => ucfirst('newsletter'),
'name_admin_bar' => ucfirst('newsletter'),
'add_new' => 'Add New',
'add_new_item' => 'Add New '.ucfirst('newsletter').'',
'new_item' => 'New '.ucfirst('newsletter').'',
'edit_item' => 'Edit '.ucfirst('newsletter').'',
'view_item' => 'View '.ucfirst('newsletter').'',
'all_items' => 'All '.ucfirst('newsletter').'',
'search_items' => 'Search '.ucfirst('newsletter').'s',
'parent_item_colon' => 'Parent '.ucfirst('newsletter').':',
'not_found' => 'No '.'newsletter'.' found.',
'not_found_in_trash' => 'No '.'newsletter'.'s found in Trash.'
);
$args = array(
'labels' => $labels,
'public' => true,
'rewrite' => array( 'slug' => 'newsletter' ),
'has_archive' => true,
'show_in_menu' => false,
'menu_position' => 20,
'menu_icon' => 'dashicons-carrot',
'taxonomies' => array( 'post_tag', 'category' ),
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt','custom-fields' )
);
register_post_type( 'newsletter', $args );
Frontend File upload code
/**********file upload code */
require_once(ABSPATH . 'wp-admin/includes/file.php');
global $wp_filesystem;
WP_Filesystem();
$content_directory = $wp_filesystem->wp_content_dir() . 'uploads/';
$wp_filesystem->mkdir( $content_directory . 'newsletterfile' );
$target_dir_location = $content_directory . 'newsletterfile/';
if(isset($_FILES['newsletterfile'])){
$name_file = 'newsletterfile'.date("h.iA").mt_rand(100000,999999).'.'.pathinfo($_FILES['newsletterfile']['name'],PATHINFO_EXTENSION);
$tmp_name = $_FILES['newsletterfile']['tmp_name'];
if( move_uploaded_file( $tmp_name, $target_dir_location.$name_file ) ) {
__update_post_meta( $id, 'newsletterfile', $name_file );
} else {
//echo "The file was not uploaded";
}
}
/***end file upload code */
Mail code
/***mail code */
$to = 'ramkankannan@gmail.com'; //sendto@example.com
$subject = 'Newsletter';
$body = '<h1>'.$_POST['newslettername'].'</h1>';
$body .= '<h1>'.$_POST['newsletteremail'].'</h1>';
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail( $to, $subject, $body, $headers );
/***end mail code */