私はWordPressに慣れていないので、写真をアップロードしたり、OpenStreetMapで自分の位置を設定したり、いくつかのドロップダウンメニューから選択したりできる特別なフォームを含むWebサイトを作成する必要があります。
これがどのように見えるべきかの例を見つけることができます。
私はすでにこれをしました:
フォームでページテンプレートを作成しました
<form id="new_post" name="new_post" method="post" action="" enctype="multipart/form-data">
ログインしているユーザーにフォームを送信可能にしました(これは安全な解決策ですか?)
<?php if ( 0 == $current_user->ID ) {
wp_loginout();
echo " to submit a post";
} else {
echo '<fieldset class="submit">
<input type="submit" value="Los" tabindex="40" id="submit" name="submit" />
</fieldset>
<input type="hidden" name="action" value="new_post" />';
wp_nonce_field( "new-post" ); } ?>
フォームが送信されると、このPHPコードが実行されます。
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == "new_post") {
$new_post = array(
'post_title' => "roadkill entry",
'post_content' => "testcontent",
'post_category' => array(0),
'post_status' => 'publish',
'post_type' => 'roadkills' // this is my custom post );
$pid = wp_insert_post($new_post);
$link = get_permalink( $pid );
wp_redirect( $link );
}
しかし、私は見つからないページで終わります。 http://www.citizen-science.at/wordpress/roadkill/eintrag-hinzufugen/
管理GUIからエントリを作成すると、単一の投稿は表示できますが、アーカイブは表示できません http://www.citizen-science.at/wordpress/roadkills/dafdf/
そうそう、私は自分の投稿タイプを登録しています。
<?php
add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type( 'roadkills',
array(
'labels' => array(
'name' => __( 'Roadkills' ),
'singular_name' => __( 'Roadkill' )
),
'public' => true,
'has_archive' => true,
)
);
}
私はここで何が恋しいですか? (私は昨日すでに動いていますが、どういうわけか壊れました)
次のコードを試してみることをお勧めします。
<?php
add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type( 'roadkills',
array(
'labels' => array(
'name' => __( 'Roadkills' ),
'singular_name' => __( 'Roadkill' )
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'roadkills')
)
);
}
あなたの登録投稿タイプ関数内に欠けている 'rewrite' => array( 'slug' => 'roadkills')がパーマリンクエラーにつながると思います上記の行を追加することで解決できます。
あなたのテーマフォルダ内にarchive-{YOUR_POST_TYPE}.php
というページ名を作成してください。あなたの場合はarchive-roadkills.php
。あなたのアーカイブページがこのページをキャッチしているかどうかをテストしますか?
もしそうなら、あなたは好きなようにページを編集することができます。既存のarchive.phpからコードをコピーするのか、それとも自分のコードからコピーするのか。
参照: テンプレート階層コーデックス