文件上传可以使用media_handle_upload和wp_handle_upload 类似的函数,其实都是调用wp_handle_upload函数

这个函数的第4个参数 支持数组

$access = array('test_form' => false, 'mimes' => array('jpeg' => 'image/jpeg',
	'png' => 'image/png','gif' => 'image/gif','jpg' => 'image/jpeg'));
//这样写就可以限制文件的类型 但是貌似对伪造的文件不好使

经过测试可以使用一个过滤器 完美解决这个问题 过滤器名称:wp_handle_upload_prefilter

add_filter('wp_handle_upload_prefilter', 'custom_upload_filter' );
function custom_upload_filter($file)
{
	$fileSize = $file['size'];//获取文件大小 做自定义处理
	$info =getimagesize($file['tmp_name']);//获取文件属性 如果不是图片将返回false
	return $file;
}

1、创建WP定时任务

register_activation_hook(__FILE__, 'wpsp_pro_cron');//wpsp_pro_cron定时任务函数
function wpsp_pro_cron()
{
	wp_schedule_event(time(),'daily','wpsp_send_mail');//执行频率
}
function wpsp_send_mail_day()
{
	wpsp_cron::wpsp_mail_center();//具体要做的事情
}

可以安装CRON VIEW插件查看有那些
继续阅读

在自定义文章类型的文章页面里面如何获取
文章的分类名

wp_get_object_terms($post->ID,'product_category');
//product_category 是你注册的文章类型
get_the_terms($post->ID,'product_category');
//功能同上

文章的tag

get_the_terms($post->ID,'product_tag');
//注册的tag名称
$tag=get_term_link($v,$v->slug)
//获取自定义分类或者TAG的URL地址
//$v是wp_get_object_terms返回的对象 
//或者是上面$tag 做foreach时里面的一个对象

继续阅读

define('WPLANG', 'zh_CN');
define('WP_LANG_DIR', FCPATH.APPPATH.'/language/');
include FCPATH.APPPATH.'/libs/pomo/mo.php';
include FCPATH.APPPATH.'/libs/pomo/l10n.php';
load_default_textdomain();
echo __( 'Sorry, you must be logged in to post a comment.');

把默认的zh_CN.mo文件方到/language目录下就可以了.

apply_filters定义了一个过滤器,如果你在开发插件可能会接触比较多,

在你自己的插件里面使用这个函数,可以方便的让其他的插件再定制你的内容

同理也可以让你去控制别人插件的内容输出

最近订单一个插件需要修改货币符号,用到了这个方法。

定义处:

'options' => array_unique(apply_filters('wpdeals_currencies', array(
'USD' => __( 'US Dollars ($)', 'wpdeals' ),
'EUR' => __( 'Euros (€)', 'wpdeals' ),
)

为了不修改原插件的代码我们使用add_filter改变其行为

继续阅读

1、注册小工具

class ciphpShowLoginWidget extends WP_Widget
{
	function __construct(){
		$widget_ops = array('classname'=>'widget_ciphp_login','description'=>'显示登录和注册');
		$this->WP_Widget(false, 'userLogin', $widget_ops);
	}
	
	function widget($args, $instance)
	{
		$user=get_current_user_id();
		if(empty($user))
		{
			$html='<article id="text-2" class="widget widget_text">
<div class="sidebar-section">	<div class="textwidget">
<a href="'.get_bloginfo('url').'/wp-admin">登录</a>
<a href="'.get_bloginfo('url').'/wp-login.php?action=register">注册</a>
</div></div></div>';
			echo $html;
		}
	}
}
register_widget('ciphpShowLoginWidget');

2、获取插件的物理路径和URL地址
define(“JSPOK_LITHO_URL”,plugins_url(”,__FILE__));
define(“JSPOK_LITOH_PATH”,plugin_dir_path(__FILE__));
继续阅读

//在插件初始化(激活插件的时候)的时候执行的函数
//适用于建立数据表,设置一些初始值
register_activation_hook( __FILE__, 'create_ciphp_remal_table' );
function create_ciphp_remal_table()
{
	global $wpdb;
	if(@is_file(ABSPATH.'/wp-admin/upgrade-functions.php'))
	{
		include_once(ABSPATH.'/wp-admin/upgrade-functions.php');
	}
	elseif(@is_file(ABSPATH.'/wp-admin/includes/upgrade.php'))
	{
		include_once(ABSPATH.'/wp-admin/includes/upgrade.php');
	}
	else
	{
		die('We have problem finding your 
'/wp-admin/upgrade-functions.php' and
 '/wp-admin/includes/upgrade.php'');
	}
	$table_charset= '';
	if($wpdb->supports_collation())
	{
		if(!empty($wpdb->charset))
		{
			$table_charset= "DEFAULT CHARACTER SET $wpdb->charset";
		}
		if(!empty($wpdb->collate))
		{
			$table_charset.= " COLLATE $wpdb->collate";
		}
	}
	$sql= "";
	maybe_create_table($wpdb->prefix."user_fav",$sql);
}

继续阅读

register_post_type('product',
			array('labels' => 
array('name' => '产品', 'singular_name' => '产品中心', 
'add_new_item' => '发布产品', 'add_new' => '发布新产品',
'edit_item' => '编辑产品', 'new_item' => '发布产品', 
'all_items' => '产品列表', 'view_item' => '查看', 
'search_items' => '搜索产品','not_found' => '没有任何产品', 
'not_found_in_trash' => 'not found in trash', 
'parent_item_colon' => '','menu_name' => '产品中心'), 
'public' => true, 'has_archive' => true, 'menu_position' => 5, 
'hierarchical' => true,
	'show_ui' => true, 'show_in_menu' => true,
        'rewrite' => array('slug' => 'works'), 
	'supports' => 
          array('title', 'editor', 'author', 'thumbnail', 'comments'),
	'taxonomies' => array('tag','category'),//使用系统的标签和分类));

继续阅读

add_action("template_redirect", 'my_template_redirect');
add_action('query_vars', 'my_add_query_vars');//注册路径名
function my_template_redirect(){
global $wp;
global $wp_query, $wp_rewrite;
$reditect_page =  $wp_query->query_vars['my_custom_page_type'];
    if ($reditect_page == "my_account"){//当前URL地址的路径名
    include(TEMPLATEPATH.'/users/my-account.php');//载入特定的文件
    die();	
    }
}
function my_add_query_vars($public_query_vars) 
{  
$public_query_vars[] = 'my_custom_page_type'; 
$public_query_vars[] = 'my_second_page';
return $public_query_vars;  
}

扩展用户信息相关函数
get_user_meta($user_id);
add_user_meta($user_id, $meta_key, $meta_value);
update_user_meta($user_id, $meta_key, $meta_value);

不用SQL语句直接获取干净的分类目录

echo "<span><select name='list'>";
foreach(get_all_category_ids() as $v)
{
	$cat_info=get_category($v);
	echo "<option value='".$v."'>".$cat_info->name."</option>";
}
echo '</select></span>';

用代码发布文章

$post = array(
	'ID'=>0,
	'menu_order' =>'',
	'comment_status' =>'open',
	'ping_status' =>'open',
	'pinged' =>'',
	'post_author' =>1,
	'post_category' =>array($cid),
	'post_content' =>$content,
	'post_date' => date("Y-m-d H:i:s"),
	'post_date_gmt' => gmdate("Y-m-d H:i:s"),
	'post_excerpt' => mb_substr($content,0,30,'UTF-8'),
	'post_name' =>trim($title),
	'post_parent' => 0,
	'post_password' =>'',
	'post_status' =>'publish',//Set the status of the new post.
	'post_title' => $title,//The title of your post.
	'post_type' =>'post', custom post type
	'tags_input' =>'', //For tags.
	'to_ping' =>'', //?
	'tax_input' =>'' // support for custom taxonomies.
);
$post_id=wp_insert_post( $post, $wp_error );