Home >  > 网站开发(三)服装网站开发(自定义字段)

网站开发(三)服装网站开发(自定义字段)

1

本来打算花一天的时间,随便弄一个与服装有关的网站的,结果所花的时间大大超过了预期,在这里记录一下吧!

关键词收集:
加盟服装店
品牌服装加盟连锁
加盟连锁服装
服装连锁企业
服装连锁品牌

一、模板

模板的确不好找,后来用的是Robolist Lite模板,不过装上之后,才发现,它的主要显示内容都是用的listing,所以又有很多问题要解决。

二、缩略图

这个还好,终于被我用自己以前的一段代码解决了。

三、自动发布的问题

这里遇到了问题,自己以前只试过往wordpress发布文章,没有试过发布其他类型的。好在在这里找到了参考。

然后修改了一下自己以前的代码,

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo

wp = Client('http://127.0.0.1/15wp/xmlrpc.php', 'admin', '1234')
"""
发表博文
"""
post = WordPressPost()
post.post_type = 'job_listing'
post.title = "this is test2"
post.content = "this is content"
post.post_status = 'publish'
wp.call(NewPost(post))

终于实现了可以用Python自动发布。不过还有两个问题没有解决:

1.如何设定发布的listing的分类的问题。

2.如何发布其他字段的内容,比如:Location这些,我还没有找到方法。

3.首页的搜索功能也无法使用。

四、总结
折腾了快一天,最后还是搞不定,总结一下。
1.已经找到了最终发布job_listing的代码,见这里的《Custom Post Types

2.也在模板文件listing-section.php中找到了相应的字段名称:

$image = wp_get_attachment_image_url(get_post_thumbnail_id($post->ID), 'full');
 $category = get_the_terms($post->ID, 'job_listing_category');
 $price = get_post_meta($post->ID, '_price_field');
 $location = get_post_meta($post->ID, '_job_location');
 $phone = get_post_meta($post->ID, '_company_phone');

将上面的代码替换之后,还是无法发布成功。

附最终的不成功的代码:

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts
from wordpress_xmlrpc.methods import posts
from wordpress_xmlrpc import WordPressTerm
from wordpress_xmlrpc.methods import taxonomies

wp = Client('http://127.0.0.1/15wp/xmlrpc.php', 'admin', '123456')

# now let's create a new product
widget = WordPressPost()
widget.post_type = 'job_listing'
widget.title = 'Widgetlast02'
widget.content = 'This is the widgets description.'
widget.post_status = 'publish'
widget.custom_fields = []
widget.custom_fields.append({
        'job_location': 'price',
        'job_listing_category':  'pre'
})
widget.id = wp.call(posts.NewPost(widget))

3.解决方案:
(1)花钱找人改模板,改成按文章显示的模板。

(2)自己照源网站仿一个wordpress模板,不过因为源网站带了一个搜索功能,这个估计自己做不了。

(3)去网上发贴求助,使自动化发货listing能够成功。

(4)换一种方式,使用selenium+chrome来发贴。不过自己尝试了这种方法之后,最后又卡在了几个问题上,比如发布按钮点击不成功,文章内容无法写入进去,还有一个选择文章分类的无法选择,这个脚本也没有成功。

不知为什么,自己在做这类事情的时候,一碰到难关的时候,心中就有一种强烈的感觉,一定要立即、马上解决掉,不解决的话心中的弦一直是紧绷的,睡觉也睡不好,心情也特别不好。

其实应该看一看Big picture,有些事情要留时间去解决的,不可能马上就能解决,因为这样而影响 自己的情绪,实在是一件划不来的事情。

五、高德地图
网页中嵌入高德地图的代码
配合Advanced Custom Fields达到不同网页显示不同的地图的效果。

<html>
<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=5acfcdd1ab56ce4075cc602aXXX"></script>
<div id="container" style="width:500px; height:300px"></div>
<script>
var longitude=<?php the_field('longitude'); ?>;
var latitude=<?php the_field('latitude'); ?>

var map = new AMap.Map('container',{    
	zoom: 10,    
	center: [longitude,latitude]});
	
	
var marker = new AMap.Marker({
    position: new AMap.LngLat(longitude,latitude),
    offset: new AMap.Pixel(-10, -10),
    icon: 'http://a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png', // 添加 Icon 图标 URL
    title: '北京'
});

map.add(marker);
marker.setIcon(icon);
</script>
</html>

如果使用响应式,直接用width:500px; height:300px就可以,但是在一个新的网站上又不灵了。

六、如何使用xmlrpc插入自定义字段的数据

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts,NewPost
wp = Client('http://127.0.0.1/16wp/xmlrpc.php', 'admin', '1234')

"""
发表博文
"""
post = WordPressPost()
post.title = "测试自定义自段"
post.content = "测试自定义自段,这是文章的内容啊,你知道吗"
post.post_status = 'publish'
post.terms_names = {
    'post_tag': ['招商', '加盟'],
    'category': ['汕尾'],
}

post.custom_fields = []   #自定义字段列表
post.custom_fields.append({  #添加一个自定义字段
        'key': 'longitude',
        'value': 114.07
})
post.custom_fields.append({ #添加第二个自定义字段
        'key': 'latitude',
        'value': 22.62
})

wp.call(NewPost(post))

updated on Apr-14-2020
如果报错:

cannot marshal objects

则需要解码:

    post.custom_fields.append({  # 添加文章特色
        'key': 'feature  ',
        'value': Item.feature.encode('utf-8') 
    }) 

如何使用自定义字段?
1.安装自定义字段插件,设定字段。
2.python插入字段。
3.模板中展示。


<?php if( have_posts() ) : while( have_posts() ) : the_post(); ?>   
<?php the_field('bus'); ?>

<?php endwhile; ?>
<?php endif; ?>

七、wordprss xmlrpc插入图片
可以直接在文章内容中使用"img src”这样的形式,发布完成之后会显示图片。

八、用户投稿插件
没有找到更好的,暂时使用的是User Submitted Posts,原因:
1.更新比较勤快,最近的一次是2周前更新的。
2.界化已经自动汉化了。

使用很简单,新建一个页面,插入短代码就可以了。

然后进入后台就可以看到别人递交的贴子了。

在添加媒体那儿,可以看到用户投稿时上传的图片:

如果想要在文章中显示图片,只需要在插件设置开启即可。

九、关于页面关键词与描述
由于我的文章没有实际意见,且大部分相同,要实现不同的页面使用不同的关键词与描述,用代码不太容易,最后用Wordpress的All in One SEO插件来实现。
1.安装插件并激活。
2.开启自动生成关键词

3.开启自动生成描述

4.成果展示:

十、日志
越来越发现日志的重要了,像自动采集的网站,日志肯定不能少。
直接使用上一次网站的代码,稍作稍改即可。
成果展示:

十一、开启评论
不知什么原因,我使用xmlrpc给wordpress发布文章,发布的文章评论竟然是关闭的,后来通过以下参数得到解决。

post.comment_status = 'open'

十二、截取文章标题
这个在这里已经说了。

十三、部署到服务器
首先VPS上面同时有python2,phthon3,我想执行pip3命令,却执行不了,通过以下方式安装。

apt install python3-pip
然后就可以用pip3了
pip3 install bs

另外,如果要以python执行命令,需要使用

pip3 install python-wordpress-xmlrpc

python3 post.py


十四、图片路径的问题
本来图片在本地显示得好好的,到了服务器上,只有首页的图片显示,第二页以后以及文章分灰的缩略图都不显示了,我还以为自己遇到了灵异事件,后来一查,原来是图片的相对路径、绝对路径的问题。
我写入网页中用的是“images\default.png”这样的相对路径。

设定了页面的url为postid.html之后,首页之后的格式变成了/page/2,/page/2,这样,所以图片路径变成了/page/2/images\default.png,这样当然显示不了图片啦,所以最后将“images\default.png”改成“\images\default.png”,即以绝对路径来写入到网页中,这样缩略图就可以显示了。

十五、修正
1.将日志文件全部放到log文件夹下面。
通过在以下代码中加入log实现:

#log_name当20180801这样的日期格式
log_name = 'log/'+datetime.date.today().strftime("%Y%m%d") + '.log'

十五、图片的自适应问题
高德地图在手机端无法自适应显示,所以需要将原来的代码:

<div id="container" style="width:700px; height:500px"></div>

改成:

<div id="container" style="width:auto; height:500px"></div>

十六、自动发布注意事项

使用时要注意:
放到网站的根目录,确保有一个img文件夹。
1.修改code.txt文件
3.修改URL中的关键词
2.修改post文件
(1)brand介绍
(2) 分类(所在品牌)
(3)标签。

本文暂无标签
Comment (1)
Trackback (0)
  1. 三郎 Google Chrome 80.0.3987.163unknow 沙发 2020/04/08 00:59

    我现在用了另外一种发布实现Python发布文章,网上有找到wordpressr的一个火车头的api接口文件,直接用那个接口+python就可以发布文章了。

  • 还没有Trackback

发表评论

*

*