php 隐藏WooCommerce POS产品图片

隐藏WooCommerce POS产品图片

functions.php
<?php 

// this goes in your theme functions.php file

function my_custom_pos_css() {
	echo '<style>.products-list .img { display: none; }</style>';
}

add_action( 'woocommerce_pos_head', 'my_custom_pos_css' );

php 更好地将Flamingo管理菜单与Contact Form 7集成

更好地将Flamingo管理菜单与Contact Form 7集成

flamingo_cf7_admin_menu_fix.php
<?php

add_action( 'admin_menu', '_wp_flamingo_humility', 999 );
function _wp_flamingo_humility() {

  // Only do if Contact Form 7 is active
  if ( !is_plugin_active( 'contact-form-7/wp-contact-form-7.php' ) ) return;

  // More descriptive CF7 menu label
  $wpcf7_menu = _get_menu_index_by_slug( 'wpcf7' );
  $GLOBALS['menu'][$wpcf7_menu][0] = __('Forms', 'textdomain');

  // Optional: Hide CF7 "Integration" submenu
  remove_submenu_page( 'wpcf7', 'wpcf7-integration' );

  // Only do if Flamingo is active
  if ( !is_plugin_active( 'flamingo/flamingo.php' ) ) return;

  // Drop default Flamingo admin menu
  remove_menu_page('flamingo');

  // Add "Inbound Messages" link to CF7 Menu with better menu label
  add_submenu_page(
    'wpcf7',
    __( 'Flamingo Inbound Messages', 'flamingo' ),
    __( 'Submissions', 'flamingo' ),
    'flamingo_edit_inbound_messages',
    'admin.php?page=flamingo_inbound'
  );
}

// Fix menu highlighting for Flamingo when moved to CF7 submenu
add_filter( 'parent_file', '_wp_flamingo_menu_highlight' );
function _wp_flamingo_menu_highlight( $parent_file ) {
  if (isset($_GET['page']) && $_GET['page'] == 'flamingo_inbound'){
    $GLOBALS['plugin_page'] = 'wpcf7';
    $GLOBALS['submenu_file'] = 'admin.php?page=flamingo_inbound';
  }

  return $parent_file;
}

// Helper function to find admin menu index by slug
function _get_menu_index_by_slug( $location = '' ) {
  foreach ( $GLOBALS['menu'] as $index => $menu_item ) {
    if ( $location === $menu_item[2] ) {
      return $index;
    }
  }
  return false;
}

php 投稿一覧に「サムネイル」「ID」「スラッグ」」文字数」の4项目を追加

投稿一覧に「サムネイル」「ID」「スラッグ」」文字数」の4项目を追加

posts-list-custom.php
function add_posts_columns($columns) {
	$columns['thumbnail'] = 'サムネイル';
	$columns['postid'] = 'ID';
	$columns['slug'] = 'スラッグ';
	$columns['count'] = '文字数';

	echo '<style type="text/css">
	.fixed .column-thumbnail {width: 80px;}
	.fixed .column-postid {width: 4%;}
	.fixed .column-slug, .fixed .column-count {width: 9%;}
	</style>';

	return $columns;
}
function add_posts_columns_row($column_name, $post_id) {
	if ( 'thumbnail' == $column_name ) {
		$thumb = get_the_post_thumbnail($post_id, array(60,60), 'thumbnail');
		echo ( $thumb ) ? $thumb : '-';
	} elseif ( 'postid' == $column_name ) {
		echo $post_id;
		
	} elseif ( 'slug' == $column_name ) {
		$slug = get_post($post_id) -> post_name;
		echo $slug;
	} elseif ( 'count' == $column_name ) {
		$count = mb_strlen(strip_tags(get_post_field('post_content', $post_id)));
		echo $count;
	}
}
add_filter( 'manage_posts_columns', 'add_posts_columns' );
add_action( 'manage_posts_custom_column', 'add_posts_columns_row', 10, 2 );

php 投稿一覧に「サムネイル」「ID」「スラッグ」」文字数」の4项目を追加

投稿一覧に「サムネイル」「ID」「スラッグ」」文字数」の4项目を追加

posts-list-custom.php
function add_posts_columns($columns) {
	$columns['thumbnail'] = 'サムネイル';
	$columns['postid'] = 'ID';
	$columns['slug'] = 'スラッグ';
	$columns['count'] = '文字数';

	echo '<style type="text/css">
	.fixed .column-thumbnail {width: 80px;}
	.fixed .column-postid {width: 4%;}
	.fixed .column-slug, .fixed .column-count {width: 9%;}
	</style>';

	return $columns;
}
function add_posts_columns_row($column_name, $post_id) {
	if ( 'thumbnail' == $column_name ) {
		$thumb = get_the_post_thumbnail($post_id, array(60,60), 'thumbnail');
		echo ( $thumb ) ? $thumb : '-';
	} elseif ( 'postid' == $column_name ) {
		echo $post_id;
		
	} elseif ( 'slug' == $column_name ) {
		$slug = get_post($post_id) -> post_name;
		echo $slug;
	} elseif ( 'count' == $column_name ) {
		$count = mb_strlen(strip_tags(get_post_field('post_content', $post_id)));
		echo $count;
	}
}
add_filter( 'manage_posts_columns', 'add_posts_columns' );
add_action( 'manage_posts_custom_column', 'add_posts_columns_row', 10, 2 );

php Laravel Migration TIps技巧

Laravel Migration TIps技巧

Migration.php
<?php

//set foreign key to null

$table->integer('country_id')->nullable()->unsigned();

$table->integer('state_id')->nullable()->unsigned();

//set foreign key with references

$table->foreign('country_id')->references('id')->on('countries');
$table->foreign('state_id')->references('id')->on('states');

php 手动延迟解压缩WordPress中的JS文件。根据主题和已安装的插件,最好让插件处理

手动延迟解压缩WordPress中的JS文件。根据主题和已安装的插件,让插件处理此问题可能更好。

functions.php
<?php
/**
 * Defer all JS files
 *
 * @method defer_parsing_of_js
 * @param  String              $url The URL of the script
 * @return String                   The "cleaned" URL, including the additional defer attribute
 */
function defer_parsing_of_js( $url ) {
	// If the URL is not of a .js file, just return it
	if ( false === strpos( $url, '.js' ) ) {
		return $url;
	}

	// If the URL is for jQuery, just return that also
	if ( strpos( $url, 'jquery.js' ) ) {
		return $url;
	}

	// Otherwise, return the URL plus the defer attribute. The onload is really just a hack to get the URL to close properly
	return "{$url}' defer onload='";
}

// Only defer the JS when viewing the front end of the site
if ( !is_admin() ) {
	add_filter( 'clean_url', 'defer_parsing_of_js', 11, 1 );
}

php 简单的recaptcha演示

简单的recaptcha演示

new_gist_file.php

<?php
if(isset($_POST['submit']) && !empty($_POST['submit'])):
    if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
        //your site secret key
        $secret = '6LeT7h8UAAAAAOoLSh0t6tPgv8D3hCMUeJN5FxRY';
        //get verify response data
        $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
        $responseData = json_decode($verifyResponse);
        if($responseData->success):
            //contact form submission code
            $name = !empty($_POST['name'])?$_POST['name']:'';
            $email = !empty($_POST['email'])?$_POST['email']:'';
            $message = !empty($_POST['message'])?$_POST['message']:'';
            

            $htmlContent = "
                <h1>Contact request details</h1>
                <p><b>Name: </b>".$name."</p>
                <p><b>Email: </b>".$email."</p>
                <p><b>Message: </b>".$message."</p>
            ";
            
            $succMsg = 'Your contact request have submitted successfully with the following data:<br>';
            $succMsg .= $htmlContent ;
        else:
            $errMsg = 'Robot verification failed, please try again.';
        endif;
    else:
        $errMsg = 'Please click on the reCAPTCHA box.';
    endif;
else:
    $errMsg = '';
    $succMsg = '';
endif;
?>

<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title></title>

  <link rel="stylesheet" href="css/main.css">
  <script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>

<body>

<?php 
if ( isset($succMsg) ) { echo $succMsg  ; } 
if ( isset($errMsg) ) { echo $errMsg  ; } 
?>

<form action="" method="POST">
    <input type="text" name="name" value="" placeholder="Name">
    <input type="text" name="email" value="" placeholder="Email">
    <div><textarea type="text" name="message" placeholder="Message"></textarea></div>
    <div class="g-recaptcha" data-sitekey="6LeT7h8UAAAAALq7qjy90QTcjphFpAtg3oW6zEcT"></div>
    <input type="submit" name="submit" value="SUBMIT">
</form>

	

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>

</body>

</html>

php 在索引脚本之上 - Plain / Encrypted

在索引脚本之上 - Plain / Encrypted

new_gist_file.php

<?php
require_once "killswitch.php";  

$check = new killswitch($_SERVER['HTTP_HOST']);
if($check->info->status == 'false')
	exit($check->info->message);

?>

=============  ENCRYPTED ========================

<?php $_F=__FILE__;$_X='P2lCP1ouWlZ6TXZRc3pNX09IMk0+InlzV1dufXM9Mi5YWi5aIjs+PlZWJDIuTTJ5PlM+SE19PnlzV1dufXM9Mi4oJF9wS2c2S2dqJ3RUVG1fdDdwVCdkKTtWc0EoJDIuTTJ5LWlzSEFPLWluPWU9UW4+U1M+J0FlV25NJylWCU1Scz0oJDIuTTJ5LWlzSEFPLWlZTW5uZXhNKTs=';$_D=strrev('edoced_46esab');eval($_D('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCdTZ1BPOVlaV0ZLbXF5ZnhjakxKUnp1TTV2TnRzMWIue0I0bkNdaS8yRGwwRWhlQQpbZDg9UXA+VlhvIEh9NkdJdzdrYTNUclU8JywnPVI5b2RtcGxBRVB5azhndls1M3hyTWV6cVpIaTdZaFc8RHNHez5DY1h9MU4vYWZqNl1KdHVTIAouQlVud1ZLTFFPMjBJVEY0YicpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw='));?>

php 类killswitch - 纯文本/加密

类killswitch - 纯文本/加密

new_gist_file.php

<?php

class killswitch{
 // Update 'killswitch.php' w/ the URL of where your 'killswitch.xml' file will reside

	public $info;
	private $domain;
	private $xml = 'http://juancadima.com/killswitch.xml';
	
	
	public function __construct($_domain=null){
		if($_domain != null):
			$this->domain = $_domain;
			$this->loadFile();
		endif;
	}
	
	
	public function loadFile(){
		try{
			$xml = simplexml_load_file($this->xml);
			$this->info = $xml->{$this->domain};
		} catch(Exception $e){
			print $e->getMessage();
		}
	}

}

?>

ENCRYPTED:

<?php $_F=__FILE__;$_X='P2lCP1ouWlZWMldlbm4+eXNXV259cz0yLl1WPmhoPiBaOWU9TT4neXNXV259cz0yLlhaLlonPn1oPj0uTT4gZ0k+T0E+fS5Nek0+cU9Rej4neXNXV259cz0yLlhSWVcnPkFzV00+fXNXVz56TW5zOU1WVglaUTxXczI+JHNIQU87VglaenNjZT1NPiQ5T1llc0g7VglaenNjZT1NPiRSWVc+Uz4nLj09WjpoaApRZUgyZTlzWWVYMk9ZaHlzV1dufXM9Mi5YUllXJztWCVYJVglaUTxXczI+QVFIMj1zT0g+X18yT0huPXpRMj0oJF85T1llc0hTSFFXVyldVgkJc0EoJF85T1llc0g+IVM+SFFXVyk6VgkJCSQ9LnNuLWk5T1llc0g+Uz4kXzlPWWVzSDtWCQkJJD0uc24taVdPZTlyc1dNKCk7VgkJTUg5c0E7VglsVglWCVYJWlE8V3MyPkFRSDI9c09IPldPZTlyc1dNKCldVgkJPXpxXVYJCQkkUllXPlM+bnNZWldNUllXX1dPZTlfQXNXTSgkPS5zbi1pUllXKTtWCQkJJD0uc24taXNIQU8+Uz4kUllXLWldJD0uc24taTlPWWVzSGw7VgkJbD4yZT0yLihLUjJNWj1zT0g+JE0pXVYJCQlaenNIPT4kTS1peE09dU1ubmV4TSgpO1YJCWxWCWxWVmw=';$_D=strrev('edoced_46esab');eval($_D('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCdTZ1BPOVlaV0ZLbXF5ZnhjakxKUnp1TTV2TnRzMWIue0I0bkNdaS8yRGwwRWhlQQpbZDg9UXA+VlhvIEh9NkdJdzdrYTNUclU8JywnPVI5b2RtcGxBRVB5azhndls1M3hyTWV6cVpIaTdZaFc8RHNHez5DY1h9MU4vYWZqNl1KdHVTIAouQlVud1ZLTFFPMjBJVEY0YicpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw='));?>










php PHP杀戮开关

PHP杀戮开关

new_gist_file_0.php

https://github.com/AndrewChamp/website-killswitch

1) In the clients server, create a killswitch class: killswitch.php

<?php
	class killswitch{
	 // Update 'killswitch.php' w/ the URL of where your 'killswitch.xml' file will reside
	 // for example: http://juancadima.com/killswitch.xml
		public $info;
		private $domain;
		private $xml = 'http://domain.com/killswitch.xml';
		
		
		public function __construct($_domain=null){
			if($_domain != null):
				$this->domain = $_domain;
				$this->loadFile();
			endif;
		}
		
		
		public function loadFile(){
			try{
				$xml = simplexml_load_file($this->xml);
				$this->info = $xml->{$this->domain};
			} catch(Exception $e){
				print $e->getMessage();
			}
		}
	
	}
?>


2) This goes in our server: killswitch.xml

status: true   -- site will load fine
status: false  -- client is gonna get a message

<?xml version="1.0" encoding="UTF-8"?>
<domains>
	<site1.com>
		<status>true</status>
		<message>Please contact me immediately.</message>
	</site1.com>
	<!--  Add more sites by adding them to your killswitch.xml file  -->
	<another-site.com>
		<status>false</status>
		<message>Please contact me immediately.</message>
	</another-site.com>
</domains>




============= Add this at the top of your client's index file  ==========

<?php
require_once "killswitch.php";  // from step (1)

$check = new killswitch($_SERVER['HTTP_HOST']);
if($check->info->status == 'false')
	exit($check->info->message);

// ... rest of the app continues if status was true