我想在查看产品列表时在管理员中自定义Woocommerce中的列.
具体来说,我想删除一些列,并添加几个自定义字段列.
我尝试了在线列出的许多解决方案,我可以删除列并添加新的列,如下所示:
add_filter( 'manage_edit-product_columns', 'show_product_order',15 );
function show_product_order($columns){
//remove column
unset( $columns['tags'] );
//add column
$columns['offercode'] = __( 'Offer Code');
return $columns;
}
Run Code Online (Sandbox Code Playgroud)
但是,如何使用实际产品数据填充新列(在本例中,称为"offercode"的自定义字段)?
我正在尝试使用此示例在 Flutter 中实现登录/注销。登录工作正常,控制台输出为:
flutter: LOGIN WIDGET BUILD CONTEXT:
flutter: LoginScreen(dirty, state: LoginScreenState#552db)
flutter: _ctx:
flutter: LoginScreen(state: LoginScreenState#552db)
Run Code Online (Sandbox Code Playgroud)
但是注销后,我无法重新登录(上下文丢失)。注销然后尝试重新登录后,onAuthStateChanged()
注销后其中的上下文丢失:
flutter: LOGIN WIDGET BUILD CONTEXT:
flutter: LoginScreen(dirty, state: LoginScreenState#d112e)
flutter: _ctx
flutter: LoginScreen
Run Code Online (Sandbox Code Playgroud)
login.dart
class LoginScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return new LoginScreenState();
}
}
class LoginScreenState extends State<LoginScreen>
BuildContext _ctx;
@override
onAuthStateChanged(AuthState state) {
print("_ctx");
print(_ctx.toString());
if(state == AuthState.LOGGED_IN) {
print("ready to login");
Navigator.of(_ctx).pushReplacementNamed("/home");
}
}
@override
Widget build(BuildContext context) {
_ctx = context; …
Run Code Online (Sandbox Code Playgroud) 我有一个发送消息的模态,为了让键盘显示,我必须将焦点设置textarea
在触发模态之后.
HTML
<script id="new-post.html" type="text/ng-template">
<div class="modal">
<form ng-submit="sendPost(post)">
<ion-header-bar class="bar-royal">
<button class="button button-clear button-light" ng-click="closeNewPost()">Cancel</button>
<h1 class="title">New Message</h1>
<button type="submit" class="button button-clear">Post</button>
</ion-header-bar>
<ion-content>
<div class="list">
<label class="item item-input">
<textarea class="textareas" id="postMessageInput" ng-model="$parent.post.message" placeholder="What do you want to say?" autofocus ></textarea>
</label>
</div>
</ion-content>
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
控制器:
$ionicModal.fromTemplateUrl('new-post.html', function(modal) {
$scope.postModal = modal;
}, {
scope: $scope,
focusFirstInput: true
});
$scope.newPost = function() {
$scope.postModal.show().then(document.getElementById('postMessageInput').focus());
};
Run Code Online (Sandbox Code Playgroud)
会发生的是模态首先滑动,然后键盘向上滑动.当模态首次显示时,有时会出现屏幕闪烁.整个经历根本不顺利.有时,textarea甚至被推到模态标题下.
理想情况下,我希望使用已在视图上呈现的键盘向上滑动模态,就好像键盘嵌入到模态中一样.这就是其他应用程序(ios)似乎的工作方式.这是可能的,还是有一种标准方法用键盘和textarea显示模态?
我正在使用cordova媒体捕获插件,以便使用摄像机在Ionic项目中捕获视频.工作得很好,除了它记录在quicktime MOV(我目前只在ios工作).
是否有可能在MP4中录制?
我想我需要在capture命令的options参数中以某种方式指定mp4:
navigator.device.capture.captureVideo(captureSuccess, captureError, options);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试以这种方式获得格式时:
navigator.device.capture.supportedVideoModes
Run Code Online (Sandbox Code Playgroud)
我只得到一个空数组.
我正在 Flutter 中打开一个模态对话框,并希望将单个参数 (postId) 传递给模态以进行进一步处理。但这会产生如图所示的错误。
class SharingDialog extends StatefulWidget {
@override
final String postId; // <--- generates the error, "Field doesn't override an inherited getter or setter"
SharingDialog({
String postId
}): this.postId = postId;
SharingDialogState createState() => new SharingDialogState(postId);
}
class SharingDialogState extends State<SharingDialog> {
SharingDialogState(this.postId);
final String postId;
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar:
child: AppBar(
title: const Text('Share this Post'),
actions: [
new FlatButton(
onPressed: () {
print("Sharing Post ID: " + this.postId);
},
child: …
Run Code Online (Sandbox Code Playgroud) 我有一个web服务返回格里高利秒的时间戳.
如何将格里高利日期(以秒为单位)转换为PHP中的unix时间戳?
我有 ViewPager2 回调设置,但需要检测用户启动的页面更改何时完成。回调不会区分用户启动和代码启动。这是我现在所拥有的:
ViewPager2.OnPageChangeCallback swipeListener = new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
//I want to run code only if user initiated this page change
//but this runs whether user initiated or code initiated
}
}
Run Code Online (Sandbox Code Playgroud)
通过代码完成的页面更改:
viewPager.setCurrentItem(targetSlide);
Run Code Online (Sandbox Code Playgroud)
ViewPager2 的文档显示了一种isUserInputEnabled()
方法,可以告诉您用户是否“可以”手动更改页面,但我需要检测用户是否“确实”启动了页面更改。
我的离子应用程序中有一个简单的Web服务...它连接到远程服务器以执行简单的任务.
代理是以离子方式设置的,如下所示:
"proxies": [{
"path": "/api",
"proxyUrl": "http://example.com/api"
}]
Run Code Online (Sandbox Code Playgroud)
并且呼叫是"/ api".这些可以http://example.com/api
在localhost浏览器中正确解析(使用离子服务器).
但是在xcode中,url被解析为:
file:///api
Run Code Online (Sandbox Code Playgroud)
我没有具体找到任何相关内容.怎么表明我要求ios?
我有一个ion-slide-box
使用ng-repeat
显示从远程服务器获取的图像.
<ion-slide-box on-slide-changed="slideChanged(index)" auto-play="true" does-continue="true">
<ion-slide ng-repeat="slide in files">
<img ng-src="{{slide.filename}}" >
</ion-slide>
</ion-slide-box>
Run Code Online (Sandbox Code Playgroud)
和js:
$scope.getFiles = function() {
Files.query({
//some parameters
}).$promise.then(function(data) {
$scope.files = data;
});
Run Code Online (Sandbox Code Playgroud)
当调用getFiles()(触发此处未显示的服务)时,$ scope.files会成功更新.但DOM(加载到离子滑动盒中的图像)不会自动更新.如何刷新DOM?我已经尝试过timeout
(没有任何反应)和$scope.$apply
(抛出$ dispatch已经引发的错误.)
即使这是一个移动应用程序,在桌面浏览器中进行测试时,我可以重新调整浏览器的大小,并自动显示图像.所以我要么弄清楚如何保持更新,要么找到一个更好的图像滑块/轮播使用.
我试图在Ionic应用程序中简单地显示base64图像.
如果我这样做,图像将不会显示:
HTML:
<img ng-src="data:image/jpeg;base64,{{myImage}}"/>
Run Code Online (Sandbox Code Playgroud)
控制器:
$scope.myImage= "/9j/4AAQSkZJ ...";
Run Code Online (Sandbox Code Playgroud)
但是如果我只是将编码的字符串直接放在图像元素中,则会显示图像:
<img ng-src="data:image/jpeg;base64,/9j/4AAQSkZJ ..."/>
Run Code Online (Sandbox Code Playgroud)
我检查了每个不安全的安全设置,看了几十个其他的SO帖子等等.如果我把这个小例子放在CodePen中,它可以双向工作.
$scope.myImage
变量会发生什么情况会阻止它绑定到图像元素?这是离子的吗?有角度的问题?