我正在写一个Wordpress插件,它添加了一个管理菜单页面.在页面中是一个表单.提交表单时,插件会写入数据库.但后来我遇到了一个问题:每当用户重新加载页面时,都会询问他/她是否再次发送POSTDATA.如果用户单击"是",则插件会再次写入数据库.
经过一番搜索,我找到了一个解决方案,即"Post-Redirect-Get"模式.然后,我发现很难将这种模式实现到Wordpress插件中.
插件本身无法发送HTTP 301/302,因为Wordpress核心已经输出了一些内容.
可以在HTML头中插入元标记(以便发出重定向).但据W3C称,元重定向已被弃用,因此我认为最好不要使用它.
使用JavaScript window.location.但是如果在用户的浏览器中禁用了JavaScript呢?
有没有其他方法来实现重定向?
我正在创建我的第一个wordpress插件.在其中,用户可以选择添加新城市并查看这些城市的活动.
我的客户要求是URL必须是这样的
SITE_NAME/cities/NY
Run Code Online (Sandbox Code Playgroud)
要么
SITE_NAME/cities/Califonia
Run Code Online (Sandbox Code Playgroud)
决定是我将创建一个文件夹城市,如果用户尝试创建一个新城市,我将在该城市的该文件夹中创建一个文件,此外我还将该条目添加到数据库中.我将插入PHP代码也进入文件.
是WP插件的新手.我的方法是否正确(用于创建文件)?还有其他方法吗?
我正试图解决我用我的一个wordpress插件遇到的问题.
这是第666行
function isUrl($url)
{
return preg_match("^http:\/\/[-0-9a-z\._]+.*$/i", trim( $url ));
}
Run Code Online (Sandbox Code Playgroud)
您对如何解决此警告有何看法?这很刺激.我无法理解,我已经尝试过,研究过一切!
我是第一次尝试PHP + WP。我打算使用WP插件挂钩。作为C ++程序员,我还打算将所有代码放入类中。目前,我有点受以下应该安装WP插件挂钩的代码段的困扰:
class SettingsHandler
{
public function __construct()
{
add_filter('plugin_action_links', array($this, 'AddSettingsLink'), 10, 2);
}
private function AddSettingsLink($links, $file)
{
if ($file==plugin_basename(__FILE__))
{
$settings_link = '<a href="options-general.php?page=options_page">Settings</a>';
array_unshift($links, $settings_link);
}
return $links;
}
}
$settingsHandler = new SettingsHandler();
Run Code Online (Sandbox Code Playgroud)
这给我一个错误消息:警告:call_user_func_array()期望参数1是有效的回调,无法访问E:\ xampp \ apps \ wordpress \ htdocs \ wp-includes \ plugin.php中的私有方法SettingsHandler :: AddSettingsLink() 199行
当我将回调切换为public时,错误消失了。似乎我不能使用私有方法作为PHP / WP中的回调。这将是非常糟糕的,因为它揭示了许多不应被其他任何人直接访问的回调方法。我可以将此类回调设为私有吗?
我还发现了以下运行良好的代码段:
class a
{
public function __construct()
{
$str = " test test ";
$result = preg_replace_callback('/test/', array($this, 'callback'), $str);
echo $result; …Run Code Online (Sandbox Code Playgroud) 在一个简单的WordPress插件中,我/user/user_id使用以下代码将commenter链接重定向到URL :
define('PROFILE', '<a href="/user/%d">%s</a>');
function my_get_comment_author_link($comment_ID) {
global $comment;
return sprintf(PROFILE, $comment->user_id,
$comment->comment_author);
}
add_action('get_comment_author_link',
'my_get_comment_author_link');
Run Code Online (Sandbox Code Playgroud)
我怎么能显示一个简单的公共用户配置文件(对于所有注册用户而不仅仅是作者)在该URL上显示用户名?
我想我应该在我的2013年主题中创建一个PHP脚本 -
<?php
/* Template Name: Public User Profile */
?>
<?php get_header(); ?>
<?php
$my_query = new WP_Query($args);
// somehow get the user ID out of URL?
// somehow get the WP_User object?
printf('<p>Name: %s</p>', $user->display_name);
?>
<?php get_footer(); ?>
Run Code Online (Sandbox Code Playgroud)
但是当重新获得URL时,如何使WordPress执行该PHP脚本/user/user_id?
我应该在这里使用Rewrite API以及如何使用?我尝试了以下,但没有看到任何影响:
add_rewrite_rule('/user/(\d+)',
'index.php?XXX=$matches[1]',
'top'
);
flush_rewrite_rules();
Run Code Online (Sandbox Code Playgroud)
或者我错过了什么,也许我应该首先添加自定义帖子类型?(如你所见 - 我很困惑,"迷失在文档中").
更新:
我可以覆盖 …
我将尝试在wordpress admin中使用以下代码进行重定向.
if(isset($_POST['submit']))
{
wp_redirect('admin.php?page=job-creation');
}
Run Code Online (Sandbox Code Playgroud)
我也尝试wp_redirect('admin.php?page=job-creation');而不是
wp_safe_redirect('admin.php?page=job-creation');
Run Code Online (Sandbox Code Playgroud)
和
header('location: admin.php?page=job-creation');
Run Code Online (Sandbox Code Playgroud)
所有代码在localhost中都正常工作.但它不能在线工作(www.example.com).
帮帮我.
我正在做一个woocommerce的小插件.在该插件中,我想在管理区域中显示部分,就像shipping Options, Flat Rate, Free Shipping etc在woocommerce设置仪表板的运输选项卡中一样.首先,我从插件创建了一个选项卡,在该选项卡中我想要这些部分.为了创建选项卡,我从这个链接获取代码所以我的插件代码是这样的
<?php
/**
* Plugin Name: WooCommerce Settings Tab
* Plugin URI: http://www.wordpress.org
* Description: Woocmmerce settings tab.
* Author: Author Name
* Author URI: http://www.wordpress.org
* Version: 1.0
*
*/
class WC_Settings_Tab {
public static function init() {
add_filter( 'woocommerce_settings_tabs_array', __CLASS__ . '::add_settings_tab', 50 );
add_action( 'woocommerce_settings_tabs_settings_tab_demo', __CLASS__ . '::settings_tab' );
add_action( 'woocommerce_update_options_settings_tab_demo', __CLASS__ . '::update_settings' );
add_action( 'woocommerce_sections',__CLASS__ . '::get_sections');
}
public static function add_settings_tab( $settings_tabs …Run Code Online (Sandbox Code Playgroud) 我必须在联系表单7中创建一个带有自定义验证字段的表单.它不适用于Contact Form 7的最新版本(4.1.1),但使用的是旧版本.
我创建了一个从表单中获取优惠券代码的字段.如果优惠券是从"HIP"启动的,我想验证条目.我的代码如下:
add_filter( 'wpcf7_validate_text', 'your_validation_filter_func', 999, 2 );
add_filter( 'wpcf7_validate_text*', 'your_validation_filter_func', 999, 2 );
function your_validation_filter_func( $result, $tag ) {
$type = $tag['type'];
$name = $tag['name'];
if ( 'coupon_code' == $name ) {
$the_value = $_POST[$name];
$myresult = substr($the_value, 0, 3);
if($myresult=="HIP")
{
$result['valid'] = true;
}
else
{
$result['valid'] = false;
$result['reason'][$name] = "Not a valid coupon code";
}
}
return $result;
}
Run Code Online (Sandbox Code Playgroud)
请给我一些建议.
validation wordpress wordpress-plugin contact-form contact-form-7
我正在开发一个需要PayPal Express结账功能的wordpress插件.
我在paypal网站上关注如何整合上下文结账功能的这篇文章(https://developer.paypal.com/webapps/developer/docs/classic/express-checkout/integration-guide/ECGettingStarted/#id53620a28- e357-4744-9979-66ed5c592183)在1步给了我以下表格.
<form method=post action=https://api-3t.sandbox.paypal.com/nvp>
<input type=hidden name=USER value=API_username>
<input type=hidden name=PWD value=API_password>
<input type=hidden name=SIGNATURE value=API_signature>
<input type=hidden name=VERSION value=XX.0>
<input type=hidden name=PAYMENTREQUEST_0_PAYMENTACTION value=Sale>
<input name=PAYMENTREQUEST_0_AMT value=19.95>
<input type=hidden name=RETURNURL value=https://www.YourReturnURL.com>
<input type=hidden name=CANCELURL value=https://www.YourCancelURL.com>
<input type=submit name=METHOD value=SetExpressCheckout>
</form>
Run Code Online (Sandbox Code Playgroud)
我已经从PayPal添加了我自己的API_username,API_password和API_Signature但是在提交时显示了ACK=Failure.
以下是来自PayPal的消息:
TIMESTAMP=2015%2d10%2d30T05%3a27%3a09Z&CORRELATIONID=24cb45b8dd36b&ACK=Failure&VERSION=0%2e000000&BUILD=18308778&L_ERRORCODE0=10002&L_SHORTMESSAGE0=Security%20error&L_LONGMESSAGE0=Security%20header%20is%20not%20valid&L_SEVERITYCODE0=Error
Run Code Online (Sandbox Code Playgroud)
因此,我无法转到PayPal文档的第2步,因此需要帮助.我究竟做错了什么?
当我在GTmetrix上查看我的WordPress网站时,我收到此消息"跨主机名并行化下载"> https://gtmetrix.com
以下是详细信息> https://gtmetrix.com/parallelize-downloads-across-hostnames.html
我该如何解决这个问题?
wordpress performance wordpress-plugin pagespeed google-pagespeed
wordpress-plugin ×10
wordpress ×9
php ×6
plugins ×2
redirect ×2
validation ×2
callback ×1
contact-form ×1
pagespeed ×1
paypal ×1
performance ×1
php-5.2 ×1
preg-match ×1
private ×1
woocommerce ×1